开篇:润墨网以专业的文秘视角,为您筛选了一篇VBA在工程测量中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
关键词:VBA Excel 工程测量
中图分类号:P258
文献标识码:A
文章编号:1007-3973(2011)010-065-02
1、引言
VBA是Basic编程语言中比较流行的一种语言,它继承了Basle的很多特性以及优点,使工程测量中大量的数据处理变得简单快捷。
2、实例
已知测站点、后视点、放样点三点坐标,利用坐标反算计算出测站点后视点与放样点的夹角、测站点与放样点的距离。
已知A、B两点的坐标值分别为(XA、yD(xB、yB),反算它们的方位角和距离其数学模型为:
已知A、B、C三点的坐标值(XAyA)(xB,yB)(xC、yC),计算它的夹角其数学模型为:
通过分析我们发现要计算ZA的值,首先计算a^B和aA。的值,而方位角aAB、aAC属于象限角,计算复杂,容易出错,而利用电子表格结合VBA程序计算就很简单。下面根据具体问题,笔者对VBA是如何结合EXCEL在工程测量中应用进行分析。
2.1自定义坐标转换的计算函数
启动Excel打开点坐标所在的工作簿,执行"工具宏Visual Basic编辑器”命令,打开“Visual Basic编辑”窗口。执行“插入模块”命令,展开“模块1(代码)”窗口,输入下面的代码:
Option Explicit
ConstPI=3.14159265358979
2.1.1方位角计算函数
Public Function XYToFAng(CX As Double。CY As Doub-le,x As Double,Y As Double)As Double
Dim DeltX.Deity As Double
DimAug,FangAsDouble
DeltX=X・CX
Deity=Y-CY
IfDeltX>0 And DeitY>O Then 第一象限角
Ang=Am(DeltY,DeltX)
Fang=Aug
ElselfDeltXO Then 第二象限角
Aug=Am(DeltY/DeltX)
Fang=PI+Ang’aug
ElseIfDeltX
Ang=Am(DeltY/DeltX)
Fang=PI+Ang
ElselfDeltX>0 And DeitY
Ang=Am(Dclty/Deltx)
Fang=2*PI+Ang
EndIf
XYToFAng=Fang*180/PI
End Funcion
2.1.2角度计算函数
Public Function XYToAng(ByVal CZX As Double.ByValCZY As Double,ByVal HsX As Doubl~ByVal HsY As Double,ByValPtXAsDouble,ByValPtYAsDouble)
DimPAngAsDouble
Dim CzHsAng,CzPtAngAsDouble
CzHsAng=XYToFAng(CZX,CZY.HsX.HsY)
CzPtAng。XYToFAng(Cz)(,CZY.PtX.PrY)
If CzHsAng>CzPtAng And CzHsAng=CzPtAng Then
PAng=2*PI+(CzPtAng-CzHsAng)
Else
PAng=(CzPtAng―CzHsAng)
End Tf
IfPang>0。rhen
Pang=Pang
Else
Pang=360-Pang
End If
XYToAng=JdToDFM(PAng)
End Function
2.1.3角度转换度分秒计算函数
Public Function JdToDFM(Jd As Double)As String
DimD,F.MAsInteger
Dim XiaoJd As Double
D=Fix(Jd)
XiaoJd=Jd-D
F=Fix(60*XiaoJd)
M=Int((60*XiaoJd-F)*60)
JdToDFM=D&”0”&F&””’&M
End Function
2.1.4测站与放样点距离计算
Public Function XyToDis(X1 As Double,Y1 As Double,X2 As Double,Y2 As Double)As Double
Dim Dis As Double
Dis=Sqr((X1.X2)Λ2+(Y1-Y2)“2)
XyToDis=Format(Dis,“#.###”)
End Function
输入上述代码完成后,关闭窗口返回。
(VBA代码在Execl中经实践检验,计算结果准确无误)
提示:自定义函数的VBA结构为“Function………EndFunction”。
代码中“XYToFAng”“XYToAng”“JdToDFM…”XyToDis”代表自定义函数名称,这些名称可以自行修改;函数名称后的括号里的内容为函数参数。
2.2计算测站点与放样点的距离和夹角
切换到点坐标所在的工作表,如图l所示。
A列为点名,B列、c列为点的x、Y坐标,这些为已知数据,D列和E列分别为需要求解的距离和夹角;第1行为测站点数据,第2行为后视点数据,第3行至第8行为放样点数据。选中D4单元格(保存“距离”的单元格),输入公式“=xtodis()”,它计算测站点(CZ)与放样点1(FYl)的距离;函数名称“xytodis”后的括号中“$2$B,$2$C,4B,4C”分别为计算距离所需的四个参数;“$2$B~$2$c”中的“$”为绝对引用标识符,它的的作用是在使用“填充柄”将公式复制到D5至D8的单元格(将鼠标移至D4单元格左下角成细十字线时,按住鼠标左键向下拖动至D8即完成复制)时,其前两个参数“2B,2C”不随单元格的变化而变化;选中E4单元格(保存“夹角”的单元格),输入公式“=xytoang($2$B,$2$c,$3$B,$3$C,4B,4C)”。它计算测站点(CZ)、后视点(HS)与放样点I(FYI)的夹角;函数名称"xytoAng”后的括号中“$2$B,$2$C,$3$B,$3$C,4B,4C”分别为计算距离所需的测站点、后视点、放样点的x、Y坐标六个参数。
2.3把自定义函数迁移到其它工作簿中使用
通常情况下,自定义函数只作用于所在的工作簿,要想在其它工作簿中使用它,可以通过加载宏来实现。
在上述工作簿中单击“文件一另存为”,打开另存为对话框,点击“保存类型”右侧的下拉按钮,在下拉列表中选择“Microsoft Office Excel加载宏(*.xla)”项,命名为“坐标转换.xla”,单击“保存”按钮。执行“工具一加载宏”命令,打开“加载宏”对话框(如图2),勾选“坐标转换”,按“确定”返回即可。
3、在工程测量中应用VBA的优点
(1)VBA是绑定在Excel上的共享语言,因此可以使用VBA完成Excel中的各个功能。
(2)使用一些简单的VBA测量程序就能够实现大量的特别是重复性的操作,并且可以通过使用快捷键、菜单命令以及工具栏按钮等方式来快速地执行VBA测量程序,从而实现大量的复杂操作的自动化。
(3)VBA可以提供大量丰富的对象,在一个工作表中就可以很方便地控制其他工作表、数据表和文档,从而实现不同工作表之间的数据交流。这样可以实现各种测量数据的快速处理,节约了很多时间。
参考文献:
[1]邵自修.工程测量[M].冶金工业出版社,1992.
[2]玄伟剑.中文版Excel2002快学教程[M].航空工业出版社,
2002.
[3]刘宇.Excel高效办公[M].人民邮电出版社,2006.