当前位置:文档之家› 小白自学ExcelVBA道路坐标高程计算程序流程

小白自学ExcelVBA道路坐标高程计算程序流程

小白自学ExcelVBA道路坐标高程计算程序流程1声明1.1 本人是个工作时间不长测量施工员。

1.2听说想轻松愉快的干好测量得学门编程,又听说ExcelVBA是个简单的可视化的常用的……1.3 本人很懒,面对厚厚的全是“昏天暗地”代码的ExcelVBA教科书籍,实在是没心没力。

其实俺还是懂点儿VB编程的(学校学过“=”是赋值,if、while、end的意思,嘿嘿,还有画窗体图框,其他的就都还给老师了)。

1.4 谷歌、度娘,是咱的好帮手。

1.5 仰望的存在,神一般的存在,无私的化身!道路中边桩坐标计算程序120424.xls(王中伟”教授”QQ:595077)曲线坐标计算程序VBA 4.6.xls(陈超”中铁”QQ:295188316)陈师傅的VBA代码乍一看感觉比王老师的让人头痛,怎么说咱们也是个有理想有目标的人,要啃就啃硬骨头!就选~~~嘿嘿~~~王老师的程序吧!1.6 道路中边桩坐标计算程序120424.xls代码获取。

王老师、陈师傅担心不懂编程的人,不小心修改代码导致程序错误,设置了vba密码(个人认为),其次我跟他们不熟,没有正大光明的要的密码,于是求助谷歌度娘,这个关于VBA 密码破解,于是很不厚道的得到了密码,为了方便本次学习,又很不厚道的把道路中边桩坐标计算程序120424.xls的密码贴出来(df750726),神人勿怪呀!2 代码理解ing…我们通过密码打开vba代码窗口,大家可以先把每个表格打开浏览一下代码,是不是感觉很短呀,感觉应该是超级链接的意思,嘿嘿,主要的代码在模块“lx”里,打开下,代码多吧,这就是咱们要肯的骨头。

现在咱们冲呀!2.1 第一段代码理解貌似第一段代码是定义的意思“定义π值”、'定义桩号点”、“'定义坡段”、“'定义基本曲线”①Public Const PI As Double = 3.14159265358979谷歌翻译:Public Const PI As Double公共常量PI 作为双精度浮点型百度百科:双精度浮点数双精度浮点数(Double)用来表示带有小数部分的实数,一般用于科学计算,用8个字节(64位)存储空间,其数值范围为1.7E-308~1.7E+308,双精度浮点数最多有15或16位十进制有效数字,双精度浮点数的指数用“D”或“d”表示。

双精度浮点数科学记数法格式:±aD±c或±ad±c在一些现代的被优化用来进行高速数学计算的处理器上双精度型实际上比单精度的快。

所有超出人类经验的数学函数,如sin( ),cos( ) ,和sqrt( )均返回双精度的值。

当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。

个人理解:PI是储存数据的符号,把3.14159265358979赋值储存进去,公共常量,意思是大家都可以调用的固定值,双精度浮点型应该是规定PI能储存的数据类型(什么整数啦、日期啦、小数啦、文字啦之类的),还有储存量(估计双精度比单精度储存的多)之类的规定。

②Public Type StaPoint……End Type谷歌翻译:Public Type StaPoint(联系上下文“定义桩号点”应该是Stake Point)公共类型桩号点百度文库:VB中Type语句的功能及用法Type 语句只能在模块级使用。

使用Type 语句声明了一个用户自定义类型后,就可以在该声明范围内的任何位置声明该类型的变量。

可以使用Dim、Private、Public、ReDim 或Static 来声明用户自定义类型的变量。

在标准模块中,用户自定义类型按缺省设置是公用的。

可以使用Private 关键字来改变其可见性。

而在类模块中,用户自定义类型只能是私有的,且使用Public 关键字也不能改变其可见性。

在Type...End Type 块中不允许使用行号和行标签。

用户自定义类型经常用来表示数据记录,记录一般由多个不同数据类型的元素组成。

个人理解:①号句定义了常量的代码(经常用π值,就把3.1415固定到PI里,方便调用)。

②使用Type语句分段(StaPoint/桩号点、Slope/坡段、CurveSec/基本曲线)、批量自定义变量的代码,这几段都是定义的双精度,之所以分段,联系下文,估计是方便经常调用。

值得注意的是CurveSec/基本曲线定义这一段,对于ST_Sta/起点、EN_Sta、/终点的定义,调用了前面StaPoint/桩号点的定义,两句话,直接把基本曲线所需要使用参数代号都定义了,呵呵,这就是Type语句吧,可以相互调用,方便定义!2.2 咦??????这个分割线是怎么回事?为什么会跟下一段的Sub Auto_Open().....End Sub分开呢?点一下Sub Auto_Open().....End Sub右上角的“声明”就变成“Auto_Open”,声明什么意思?Auto_Open又是什么意思?点击声明的下拉列表,好家伙,全是程序(sub)代号,应该是起到一个引所目录的作用吧!触发某段代码运行.....对于上面的Sub Auto_Open()......End Sub代码的功能的功能聪明的我已经猜到,是打开Excel表格,就会跳到标签为“欢迎”的页面。

③Sub……. End Sub谷歌翻译:Sub……. End Sub(联系上下文“定义桩号点”应该是Stake Point)程序结束程序百度搜索:Sub……. End Sub语句的功能及用法语法[Public | Private] Sub name [(arglist)][statements][Exit Sub][statements]End SubSub 语句的语法包含以下部分Public 表示Sub 过程可被所有Script 中的所有其他过程访问。

Private 表示Sub 过程只可被声明该过程的Script 中的其他过程访问。

Name Sub 的名称,遵循标准变量命名约定。

Arglist 代表在调用时要传递给Sub 过程的参数的变量列表。

用逗号隔开多个变量。

Statements 在Sub 过程主体内所执行的任何语句组。

用户自定义类型经常用来表示数据记录,记录一般由多个不同数据类型的元素组成。

在Sub 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。

在过程内显式声明的变量(使用Dim 或等效方法)总是局部变量。

对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。

Sub 过程是包含在Sub 语句和End Sub 语句中的一系列Visual Basic 语句。

每次调用过程时都执行过程中的语句,从Sub 语句后的第一个可执行语句开始,到遇到的第一个End Sub、Exit Sub 或Return 语句结束。

个人理解:Sub语句中sub作为开头,是让计算机一阅读代码就知道,你执行的是一个程序,而不是默认的定义一些数据,当然要先定义,才能执行,前面的①②代码都是公共定义,是计算机最先执行的,sub里有自己小范围的dim定义。

据观察给sub后加名字,名字最后必须是(),至于为什么要加(),别问我,我是小白,我不知道!!!但启动调用程序时,就直接用写名字就行了。

2.3 一切反动派都是纸老虎丫丫了个呸的!这一层一层的代码都是什么呀!太祖有云,一切反动派都是纸老虎!上去戳他去!行动听指挥,一步一步来!④Dim zy, i, j As Integer谷歌也没搜到Dim是个啥玩意,就当成定义的意思了,定义zy, i, j为整数类型(Integer),后面还有个定义成字符型(String)的,就是可以储存字母之类的。

⑤PM(3, 5)Dim PM(3, 5) As Double里出现了个PM(3,5)百度知道:excel vba 中PM(3,5)是什么意思?1、cells(行坐标,列坐标)表示一个单元格的位置,如:A1 :CELLS(1,1) B2:CELLS(2,2) C2: CELLS(2,3)2、VBA中没有PM() 属性,(1)可能是自定义的数组,如:dim PM(10,10)则PM(3,5)就是这个数组的一个元素(2)或是单元格区域,如:set PM=RANGE("B2")则 B2为 PM(1,1) ,PM(3,5)就是单元格 F4个人理解:Dim PM(3, 5) As Double是定义3×5=15个PM(?,?)数组元素,双精度的,可以使用这十五个PM(?,?)符号进行储存,注意第二个问号前有个空格。

⑥With Sheets("平面资料")……End With百度知道:VBA中的WITH 语句用法及含义通俗点讲with的作用就是简化代码,让代码简洁易懂让你不需要输入重复的内容例如:With [A1].RowHeight = 10.ColumnWidth = 15End With相当于[A1].RowHeight = 10[A1].ColumnWidth = 15省去了输入很多[A1]也就是说with中以. 开头的就相当于WITH后的对象.什么什么什么⑦Rows("6:500").ClearContents谷歌翻译:Rows("6:500").ClearContents行清除内容百度知道:excel的vb中Rows( 6:500 ).ClearContents是什么意思?将第6行到第500行的内容清除。

谷歌翻译:Worksheets("Sheet1").Range("A1:G37").ClearContents工作表范围清除内容2.4 探索与发现其实就单纯的表格数据计算,所使用的VBA编程知识,是非常非常少的,换个VB编程高手,来看咱们工程坐标计算所使用的代码规则,简直就是加减乘除而已。

事实上也是如此,你只要耐心的跟同样小白的我,一起花十几分钟看完这篇流程,你已经有能力看懂88%的代码,并且可以简单的修改应用。

传说ExcelVBA可以直接接入CAD….这就要等大家去探索发现了,嘿嘿!!废话少说,还有几段小代码规则,大家再来看看吧!⑧If .Cells(i + 2, 3) = "" Then…. End If如果你连if、while、for这些条件循环语句都不懂的话,那你真比我还小白了,哈哈!!!这段代码并不难,之所以拿出来研究,还是为了消除大家的畏惧心理,嘿嘿!!百度搜索:这个语句可判断If Cells(j, 2) ="" Then 这个单元格“Cells(j, 2)”是空白单元格吗?如果cells(j,2)为空的话,这时候下一步,这里的双引号是空的意思。

相关主题