1、教你如何通过ExcelVBA编写测量坐标计算程序教你如何通过Excel VBA编写测量坐标计算程序发布日期:2013-01-11来源:网络作者:未知浏览次数:1704摘要:认识VBA、理解VBA,并利用OfficeExcelVBA编写测量坐标计算程序。关键词:ExcelVBA程序坐标编写了解:VBA是什么?简单的说就是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。可以用Excel的宏语言来使Excel自动化运行等Microsoft让它开发出来的应用程序共享一种通用的自动化语言VisualBasicForApplication(VBA),可以认为VBA是非常流行的应用程序开
2、发语言VisualBasic的子集,事实上VBA是VB应用程序的版本,尽管存在有些不同VBA和VB在结构上仍然十分相似。如果你已经了解VB会发现学习VBA非常快。相应的学完VBA会给学习VB打下坚实的基础。理由:选择ExcelVBA编程的理由是因为它的计算功能非常强大,是现今任何编程计算器无法逾越的。它运用范围广,计算速度快,计算精度高,合理化显示等。或许很多测量人员对ExcelVBA还有些陌生,主要是大家寄托于计算器、电脑、手机PDA等系列软件使用。ExcelVBA对于大多数测量人员而没有系统学过计算机语言程序设计的人群来讲有一定含糊,不过只要有基本数学知识、测量常识和逻辑理解的人,都能通过
3、ExcelVBA编写设计出称心如意的测量程序。目标:基于ExcelVBA的测量坐标计算程序的设计目标是将繁琐计算过程转入到计算机中,利用程序语言的重复性原理,在计算机中可将坐标计算得出更精确的结果,使坐标计算更加可靠。最终目标是让用户可以通过ExcelVBA自行完成坐标计算程序设计。认识:学习VBA到底需要什么基础和了解些什么?学习VBA需要认识英文字母、一般的单词(如:函数所用的过程)、数学基础知识、测量常识、逻辑性思维即可。在VBA中需要了解VBA的过程、变量、属性、方法、事件、语句等。ExcelVBA程序可以分为“录制宏、自定义函数”,由于录制宏编写计算类程序它限制了计算涵式过程,而无法
4、达到自定义数据直接运算的目的,所以大家可以通过按钮式点击进行自定义函数过程(还可以通过窗体定义过程)。基本常识: 1、类型:常用类型分为Integer(整型)、Single(单精度型)、Double(双精度型)、String(字符串型)、Variant(数字)、Variant(字符)。 2、变量:Dim变量名As数据类型。例:DimAAsDouble定义变量除了可以使用Dim语句外,比较常的还有:static语句,Private语句,Public语句。 3、常量:Const常量名As数据类型常量的值。例:ConstPI=3.1415926535898常量声明后不可对它再进行赋值。 4、If语句
5、:If逻辑表达式ThenIfQ0Then语句块1Q=-1ElseElse语句块2Q=1EndIfEndIf 5、Do循环语句:DoWihle循环条件DoWhileCells(j,1)Empty语句块1X=N+(Cells(j,1)-D)*Cos(F)ExitDoY=E+(Cells(j,1)-D)*Sin(F)语句块2j=j+1LoopLoop 6、调用单元格数值:WithSheets(单元格名称)WithSheets(坐标计算)N=.Cells(行,列)N=.Cells(3,2)E=.Cells(行,列)E=.Cells(4,2)D=.Cells(行,列)D=.Cells(5,2)F=.Ce
6、lls(行,列)F=.Cells(6,2)EndWithEndWith说明:这里的.Cells(行,列)表示调用Sheets(坐标计算)单元格中指定数值。 7、MsgBox事件语句:PrivateSubWorkbook_Open()PrivateSubWorkbook_Open()MsgBox提示语句MsgBox欢迎使用直线坐标计算程序!EndSubEndSub 主题:通过以上认识相信大家对VBA编程稍有认识与了解,现在将进行测量坐标计算程序设计。给大家讲解的是“直线坐标中桩计算”的程序如何编写与运算。 思路:根据单元格输入的已知数据并由With过程调用,建立Do循环计算模式自动填充待求点单元
7、格坐标。 准备:本表需将安全级别设置为“低”,否则运行时点击计算按钮没有反映。 Office Excel 设置方法如下: Excel 2003版:工具宏安全性选择较低的安全级别重新打开文件即可运行。 Excel 2007版:Office按钮Excel选项信任中心信任中心设置宏设置启用所有宏。 版本:程序测试演示版本 Microsoft Office Excel 2003直线坐标计算原理:如下图所示,已知直线的起点坐标、起点切线方位角ao、直线长度L。直线的止点坐标、止点方位角az计算如下:已知计算数据:输入直线要素起点坐标xo3378605.445起点坐标yo453648.704起点桩号O75
8、86.707计算方位角ao98.565562程序操作步骤:1、设置表格框架(可以根据自己的要求设计),图示如下:2、在菜单栏上面点击右键弹出下拉式对话框选中“VisualBasic”。3、调用后的VisualBasic菜单栏显示如下。4、插入命令按钮(按钮主要用于鼠标点击时触发函数运行)。5、插入命令按钮后样式,在上面点击右键命令按钮对象编辑输入“坐标计算”名称(可以根据自己要求输入)。同样方法添加“数据清除”按钮。6、在“坐标计算”按钮上面点击右键查看代码,即可进入代码编辑区域。同样方法编辑“数据清除”按钮代码。7、代码输入区域,在蓝色线条位置粘贴“VBA主要源码”代码然后点击左上角Exce
9、l图标即可返回Excel电子表格界面。(这里还可以在VBAProject上面点击右键插入模块将代码粘贴到模块中通过路径指引,但是在这里就直接将代码粘贴在按钮内部减少了添加模块的繁琐)。VBA主要源码: OptionExplicit显式声明模块中的所有变量 PrivateSubCommandButton1_Click()按钮下粘贴以下代码:DimjAsIntegerDimAi,Bi,Ci,Di,Ei,Fi,Gi,HiAsDoubleDimN,E,D,X,Y,FAsDouble定义变量ConstPi=3.14159265358979WithSheets(坐标计算)IfTrim(.Cells(3,2
10、)=ThenMsgBox请输入“起点坐标X”!,vbInformation,提示:ExitSubIfTrim(.Cells(4,2)=ThenMsgBox请输入“起点坐标Y”!,vbInformation,提示:ExitSubIfTrim(.Cells(5,2)=ThenMsgBox请输入“起点桩号K”!,vbInformation,提示:ExitSub检测数据IfTrim(.Cells(6,2)=ThenMsgBox请输入“起点方位角F”!,vbInformation,提示:ExitSubN=.Cells(3,2)E=.Cells(4,2)D=.Cells(5,2)调用已知数据F=.Cell
11、s(6,2)Gi=Int(.Cells(5,2)+10)/10)*10Hi=.Cells(5,2)+.Cells(7,2)Fi=Abs(F)Ai=Int(Fi)Bi=(Fi-Ai)*100Bi=Int(Bi)Ci=(Fi-Ai)*10000-100*Bi六十进制转换为十进制Di=Bi+Ci/60Ei=Ai+Di/60IfF0ThenF=-EiElseF=EiEndIfF=F/180*PiEndWithj=9DoWhileCells(j,1)EmptyX=N+(Cells(j,1)-D)*Cos(F)Y=E+(Cells(j,1)-D)*Sin(F)坐标计算核心Cells(j,2)=Round(
12、X,3)Cells(j,3)=Round(Y,3)j=j+1LoopEndSubPrivateSubCommandButton2_Click()按钮下粘贴以下代码: Range(B9:C65536).ClearContents EndSub VBA源码说明:OptionExplicit显式声明模块中的所有变量;Private Sub CommandButton1_Click()Private外部,可供类或是模块自身调用;Sub过程(不返回值)和函数(返回值)可将其视为类的方法;CommandButton1_Click()计算按钮名称。DimjAsInteger定义整型变量;DimAi,Bi,C
13、i,Di,Ei,Fi,Gi,HiAsDouble定义双精度变量;ConstPi=3.14159265358979定义常量;WithSheets(坐标计算)介词;IfTrim(.Cells(3,2)=ThenMsgBox请输入“起点坐标X”!,vbInformation,提示:ExitSubTrim删除字符中空格;.Cells(3,2)调用表中的第三行第二列数值;MsgBox弹出窗口提示框;vbInformation弹出窗口类型;ExitSub退出程序;Gi=Int(.Cells(5,2)+10)/10)*10Int将数字舍入到最接近的整数;Fi=Abs(F)Abs绝对值;IfF0ThenF=-
14、EiElseF=EiEndIf当F小于0则F等于-Ei否则F等于Ei结束判断;EndWith结束介词语句;j=9循环定义,表示从第九行开始执行;DoWhileCells(j,1)EmptyDoWhile循环控制语句,用于首先执行一次循环体语句,然后开始测试循环条件,当条件为真时继续循环的处理过程;X=N+(Cells(j,1)-D)*Cos(F)Y=E+(Cells(j,1)-D)*Sin(F)Cells(j,2)=Round(X,3)Cells(j,3)=Round(Y,3)j=j+1逐句循环,每成功运行一次即为循环一次,然后继续执行下一行。Loop当条件不满足时结束循环语句。EndSub退
15、出Sub程序过程。PrivateSubCommandButton2_Click()Range(B9:C65536).ClearContents清除区域B9:C65536中的内容。EndSub粘贴后的代码区域显示:8、返回Excel表格后点击顶部按钮“退出设计模式”即可正常点击按钮。9、在单元格中输入已知数据。10、点击“坐标计算”按钮即可计算出以下坐标。注:新建空白表格时需将单元名称“Sheet1”改为“坐标计算”。程序源码文件下载地址:vba_zxzb.rar结论:通过实践证明,在工作中知道已知测量数学模型并结合编程技术写一些程序对常用的数据处理能够高效的解决实际工作中出现的问题,从而使工作效率得以提高。在这里或许有朋友要问为什么不编写和演示复杂的曲线坐标计算程序?其实编写简单的和复杂的都一样,因为教你的只是一种方法,一种思路,而不是里面的公式运算,所以如果你只要用心去学就算告诉你一个简单的过程你就会理解里面的意思。当然功夫还得靠大家自己多加练习才能迈入编程的正常轨道。提醒大家一句话:人人都是天才,只是你能否把空闲时间利用到有价值的基础之上?
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1