小白自学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 第一段代码理解
貌似第一段代码是定义的意思“定义π值”、'定义桩号点”、“'定义坡段”、“'定义基本曲线”
1Public 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 关键字也不能改变其可见性。 在 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 Sub
Sub 语句的语法包含以下部分
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的作用就是简化代码,让代码简洁易懂
让你不需要输入重复的内容
例如:
vba自学好学吗With [A1]
.RowHeight = 10
.ColumnWidth = 15
End 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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论