Excel VBA在工程测量上的应用

所属栏目:计算机应用论文 发布日期:2011-06-09 07:59 热度:

  摘要:Excel是工作中经常使用的办公软件。在测量工作中,也有很大的应用,比如,计算一个角度的三角函数值、导线计算。Excel本身提供了强大的二次开发功能,本文将阐述用它来解决上面所提到的问题。
  
  关键词:Excel,VBA,工程测量,导线计算
  
  
  0引言
  Excel是大家很熟悉的办公软件,相信大家在工作中经常使用。在测量工作中,计算一个角度的三角函数值,而角度的单位是60进制的,计算起来比较困难,Excel本身无法直接计算60进制的角度的三角函数,将利用函数语言解决转换问题,从而完成导线计算。
  1实例DEG的函数
  初识VBAIDE,首先,必须懂得一些简单的VB编程常识。
  打开Excel,按Alt+F11即进入VBAIDE,学过VB的人一看就知道那就是熟悉的VB界面。下面看看如何定义一个函数,然后利用它来解决60进制的角度的三角函数计算问题。在菜单上依次点击[插入]----->[模块],然后输入如下代码
  PublicConstpi=3.14159265359
  PublicFunctionDEG(nAsDouble)
  DimAAsDouble,BAsDouble,CAsDouble,DAsDouble,EAsDouble,FAsDouble,GAsDouble,KAAsDouble
  D=Abs(n)+0.000000000000001
  F=Sgn(n)
  A=Int(D)
  B=Int((D-A)*100)
  C=D-A-B/100
  DEG=F*(A+B/60+C/0.36)*pi/180
  EndFunction
  这样,就定义了一个名字叫DEG的函数,它的作用就是转换60进制的角度为Excel认识的弧度。编辑完后按Alt+Q即返回Excel,再在某一单元格输入=sin(deg(A1))(A1既可以是单元格的值,也可以是输入的角度值),回车,就计算出了成果,可以用计算器检验一下是否正确。如果出现#NAME?那就要设置一下安全设置。依次点[工具]->[宏]->[安全性],在安全级选项卡上选择“中”或者“低”,然后关闭后重新打开就可以了,以后只要是60进制的角度,就用它转换,非常方便。
  2导线计算
  工程测量中,经常碰到导线的计算,如果手头没有平差计算程序就只有手工计算了,这时候可以编个小程序来计算,其实,这很简单,只要编写了一个附合导线计算程序,代码很简单,但很实用。下面是该程序的代码:
  Sub附合导线计算()
  DimmAsInteger,nAsInteger,msAsDouble,ggAsDouble,shtAsObject,xxAsDouble,yyAsDouble,SAsDouble
  Setsht=ThisWorkbook.ActiveSheet
  DoWhilesht.Cells(m+3,4)<>""
  m=m+1
  Loop
  Forn=3Tom+2
  ms=DEG(ms)+DEG(sht.Cells(n,4))
  ms=RAD(ms)
  S=S+sht.Cells(n,3)
  Next
  ms=DEG(ms)
  gg=RAD(DEG(sht.Cells(3,5))+ms-DEG(sht.Cells(3+m,5))-pi*m)
  xx=0:yy=0
  Forn=4Tom+2
  '方位角
  sht.Cells(n,5)=RAD(DEG(sht.Cells(n-1,5))+DEG(sht.Cells(n-1,4))-pi-DEG(gg)/m)
  '坐标增量
  sht.Cells(n,6)=Format(sht.Cells(n-1,3)*Cos(DEG(sht.Cells(n,5))),"#####.####")
  sht.Cells(n,7)=Format(sht.Cells(n-1,3)*Sin(DEG(sht.Cells(n,5))),"#####.####")
  '坐标增量和
  xx=xx+sht.Cells(n,6)
  yy=yy+sht.Cells(n,7)
  Next
  xx=xx+sht.Cells(3,10)-sht.Cells(m+2,10)
  yy=yy+sht.Cells(3,11)-sht.Cells(m+2,11)
  sht.Cells(m+4,5)="△α="&Format(gg,"###.######")
  sht.Cells(m+4,6)="△X="&Format(xx,"###.###")
  sht.Cells(m+4,7)="△Y="&Format(yy,"###.###")
  sht.Cells(m+4,3)="∑S="&Format(S,"###.###")
  sht.Cells(m+4,9)="△S="&Format(Sqr(xx*xx+yy*yy),"###.###")
  sht.Cells(m+4,10)="相对精度1/"&Format(S/Sqr(xx*xx+yy*yy),"######")
  Forn=4Tom+2
  sht.Cells(n,8)=Format(xx/S*sht.Cells(n-1,3),"###.####")
  sht.Cells(n,9)=Format(yy/S*sht.Cells(n-1,3),"###.####")
  Next
  Forn=4Tom+1
  sht.Cells(n,10)=sht.Cells(n-1,10)+sht.Cells(n,6)-sht.Cells(n,8)
  sht.Cells(n,11)=sht.Cells(n-1,11)+sht.Cells(n,7)-sht.Cells(n,9)
  Next
  Columns("F:K").Select
  Selection.NumberFormatLocal="0.000_"
  EndSub
  PublicFunctionRAD(NuAsDouble)AsDouble
  DimAAsDouble,BAsDouble,CAsDouble,DAsDouble,EAsDouble,FAsDouble,GAsDouble,pAsDouble
  D=Abs(Nu)
  F=Sgn(Nu)
  p=180#/pi
  G=p*60#
  A=Int(D*p)
  B=Int((D-A/p)*G)
  W=B
  C=(D-A/p-B/G)*20.62648062
  RAD=(C+A+B/100)*F
  EndFunction
  值得注意的是,前面提到的DEG函数别忘记加进去。
  如果自己定义一个名字叫“计算”的按钮,指定此工具的宏为“单一附合导线计算”,那么,只要按上面的格式输入原始数据,点“计算”就可以得到计算结果了。所有的过程都是自动的,无须再手工填写,是不是很方便?
  当然,也可以利用Excel把工作表中点的坐标值(二维或者三维)在CAD中展绘出来,同样可以再加个工具按钮。这里就不在一一介绍。
  Excel的功能是非常强大的,利用他可完成许多测量上的计算,而且方法要方便的多。

文章标题:Excel VBA在工程测量上的应用

转载请注明来自:http://www.sofabiao.com/fblw/dianxin/yingyong/9332.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3