小白自学ExcelVBA道路坐标高程计算程序流程汇编
怎样计算高速公路路线坐标及高程

一个excle模板的制作在当今社会,excle的使用已经是越来越来频繁了,几乎涉及所有的行业,路桥施工也不例外。
我在某路桥公司曾经负责过某项目部的测量工作。
大家都知道,测量最主要的就是计算了,如坐标、高程、横坡度等.我现在给大家推荐一款我自己编制的关于测量计算的excel 模板。
首先我会跟大家介绍一下模板的作用,然后再一一讲解此模板的制作过程。
首先给大家看一下此模板的界面如下:也许大家咋一看,切~ 这算啥,我也会做这张表格,实在是太简单了。
不错,如果仅仅是靠手动输入这样子的数字,也许只要懂一点点excle的人都会制作出这张表格吧。
不过,这张表格并不是你表面所看到的仅仅是几个数字而已,其内在的公式才是它的亮点。
也许这样讲大家还不是很清楚,我继续给大家截个图,看看它里面的公式是什么。
大家注意到上面的公式了吗,并不是仅仅是输入数字就完事的,它是一个自定义函数zbx(),那么后面的都是一样吗?完全正确,后面的都是自定义函数,它们分别是zby()、sqx()、hpz()、hpy()。
也许大家会问,恩,是不错,但是有什么用呢?那让我先给大家简述一下这个自定义函数的用法。
竟然是一个函数,那么它就必须要有一个自变量,这几个函数的自变量又是什么呢?其实这个模板里面所有函数的自变量只有一个,就是桩号。
什么意思?就是只要你给出任意一个桩号,都能得到其对应的坐标、中桩高程和横坡度。
假设我们要K38+000~K38+200段落内每隔20M一个断面所有点的坐标、中桩高程、以及左右横坡。
我就用这个模板给大家演示一下(此模板暂时数据只针对黄祁高速公路六标项目部)。
先在桩号那一列把K38+000~K38+200输入进去,可不要真的把字母“K”和加号“+”给输进去,只用输入纯数字就行了,否则计算会出错,之所以在模板里显示的是那样子,只不过是自定义的单元格式而已。
第二步剩下的仅仅就是拖动公式了,后面的都是公式,所以可以一起拖下来,先选定后面的所有单元格,然后向下直接拖动至最后,那么你需要的数据就全部出来了。
利用VB编程控制Excel处理测量数据

文章编号:1672-8262(2007)04-96-04 中图分类号:P209 文献标识码:B 利用VB 编程控制Excel 处理测量数据阳德胜33 收稿日期:2006—10—08作者简介:阳德胜(1971—),男,测绘工程师,从事道路勘测工作。
(广东省公路勘察规划设计院,广东广州 510507)摘 要:介绍了利用VB 610编程控制电子表格Excel 处理测量数据的编程方法与技巧,从而实现测量数据处理可视化和制表自动化,提高了测量数据处理的效率和准确性。
关键词:VB;Excel;编程;测量数据1 引 言VB 是人们常用的一种高级程序设计语言,利用VB 开发的程序可作为OLE (Object linking and e mbed 2ding )容器。
Excel 作为一种非常普及的办公自动化软件,可以用作OLE 服务器,向外部输出某些属性、方法和事件。
通过OLE 自动化,VB 程序可以调用Excel 的功能,因此,可以利用VB 编程控制Excel 处理测量数据。
本文以公路测量数据处理为例介绍这方面的一些编程方法和技巧。
2 VB 与Excel 链接VB 与Excel 的链接步骤和常用命令如下:(1)打开VB6.0,进入VB 程序设计界面,从下拉菜单“工程”中选择“引用”,进一步选择“M icr os oft Ex 2cel 910Object L ibrary ”,再选择“确定”,表示在工程中要引用Excel 类型库。
(2)在通用对象的声明过程中定义Excel 对象:D i m excel1A s Excel .App licati on D i m excel1Book A s Excel .Work Book D i m excel1Sheet A s Excel .Worksheet(3)创建Excel 对象SET excel1=Create Object (“Excel .App licati on ”)(4)建立一个新Excel 工作簿文件Set excel1Book =excel1.Workbooks ().Add……excel1Book .SaveA s [路径]\“文件名”(5)打开一个旧Excel 工作簿文件Set excel1Book =excel1.Workbooks .Open ([路径]\“文件名”)(6)设置Excel 对象可见(或不可见)excel1.V isible =True (False )(7)增加Excel 工作表,并命名Sheets .AddSet excel1Sheet =excel1Book .Worksheets ("sheet n")Sheets ("Sheet n").SelectSheets ("Sheet n").Na me ="工作表名"(n 表示第n 个工作表)(8)设置Excel 工作表Set excel1Sheet =excel1Book .Worksheets ("工作表名")(9)给工作表单元格(r ow,col )赋值excel1Sheet .Cells (r ow,col )=值或算式(10)读工作表单元格(r ow,col )的值Sheets ("工作表名").Select X =excel1Sheet .Cells (r ow,col )(11)保存Excel 工作簿Active Workbook .Save(12)退出Excelexcel1.Quit(13)交还控制权给Excelset excel1=nothing3 利用VB 程序控制Excel 制表打开Excel,选择“工具\宏(M )\录制新宏(R )”,按常规方法制表,再选择“停止录制”,然后对所录制的内容进行分析,就可以获得绘制各种Excel 表格的方法和命令,将录制的内容复制插入VB 程序中,在执行程序的过程中,将自动生成所设计的Excel 表格。
Excel-VBA-编程教程[完整版]、excel高级教程
![Excel-VBA-编程教程[完整版]、excel高级教程](https://img.taocdn.com/s3/m/a5f5f7eb33d4b14e852468b3.png)
目录一、VBA语言基础...................................................................................... .. (1)第一节标识符...................................................................................... . (1)第二节运算符...................................................................................... . (1)第三节数据类型...................................................................................... (1)第四节变量与常量...................................................................................... .. (1)第五节数组...................................................................................... .. (2)第六节注释和赋值语句...................................................................................... (2)第七节书写规范...................................................................................... (2)第八节判断语句...................................................................................... (2)第九节循环语句...................................................................................... (3)第十节其他类语句和错误语句处理...................................................................................... . (4)第十一节过程和函数...................................................................................... . (4)一.Sub过程 (4)二.Function函数 (5)三.Property属性过程和Event事件过程 (5)第十二节内部函数...................................................................................... (5)一.测试函数 (5)二.数学函数 (5)三.字符串函数 (5)四.转换函数 (6)五.时间函数 (6)第十三节文件操作...................................................................................... .. (6)文件 (6)删除 (6)打开 (6)读入 (7)写入 (7)关闭 (7)其他文件函数 (7)二、VISUALBASIC程序设计网络教学 (1)第一课VBA是什么...................................................................................... (1)1.1VBA是什么...................................................................................... . (1)1.2EXCEL环境中基于应用程序自动化的优点 (1)1.3录制简单的宏...................................................................................... . (1)1.4执行宏...................................................................................... . (2)1.5查看录制的代码...................................................................................... (2)1.6编辑录制的代码...................................................................................... (3)1.7录制宏的局限性...................................................................................... (3)1.8小结...................................................................................... .. (3)第二课处理录制的宏...................................................................................... . (3)2.1为宏指定快捷键...................................................................................... (3)2.2决定宏保存的位置...................................................................................... .. (4)2.3个人宏工作簿...................................................................................... . (4)2.3.1保存宏到个人宏工作簿 (4)2.3.2使用并编辑个人宏工作簿中的宏 (4)2.4将宏指定给按钮...................................................................................... (4)2.5将宏指定给图片或其他对象...................................................................................... . (5)2.6小结...................................................................................... .. (5)第三课学习控件...................................................................................... .. (5)-----------------------页面2-----------------------3.1EXCEL开发过程简介...................................................................................... (5)3.2认识不同的控件...................................................................................... (5)3.3向工作表添加控件...................................................................................... .. (6)3.4设置控件的特性...................................................................................... (6)3.5给控件命名...................................................................................... .. (6)3.6使用用户窗体...................................................................................... . (6)3.7疑难解答...................................................................................... (7)第四课理解变量和变量的作用...................................................................................... .. (7)4.1代码存在的位置:模块...................................................................................... (7)4.2对模块的概览...................................................................................... . (7)4.2.1创建过程 (8)4.2.2运行宏 (9)4.3保存对模块所做的改变...................................................................................... (9)4.4变量...................................................................................... .. (9)4.4.1变量的数据类型 (9)4.4.2用Dim语句创建变量(声明变量) (10)4.4.3变量命名的惯例 (10)4.4.4使用数组 (10)4.4.5变量赋值 (11)第五课利用VBA设置工作表使用权限 (11)1.使用WITH语句。
Excel VBA在公路路线坐标计算中的应用

Excel VBA在公路路线坐标计算中的应用摘要:通过分析公路路线坐标计算原理,创建Excel VBA的对象模型,可通俗易懂,方便准确地完成公路路线坐标计算,值得推广应用,文中以作者编写的“Excel公路坐标计算程序”为算例,说明介绍。
关键词:坐标计算,Excel VBA,坐标转换,数据读取传输引言作为公路测量工作者,公路路线坐标计算是一件最基础和最重要的工作之一。
虽然目前有部分公路坐标计算软件,但往往价格不低,而且通常操作复杂。
Microsoft 的常用办公软件Excel提供的VBA程序,功能强大,且与Excel工作表实现无缝接合,只要灵活应用,即可方便、快捷地解决测量中大量的、机械的数据处理过程。
文中介绍道路曲线坐标计算三种基本形式—直线、圆曲线、缓和曲线的中边桩计算公式,分析利用Excel表格及其VBA程序计算公路坐标的一般方法和关键节点,同时以两个不同类型的路线为实例具体说明计算过程和精度分析。
1 公路路线坐标计算基本原理1.1 中线坐标计算一般公路的路线坐标计算普遍采用三种线型:直线、圆曲线和缓和曲线。
其相应的中线坐标计算公式如下:1)直线(见图1)x=x0+S0×cos(a0)y=y0+S0×sin(a0)2)圆曲线(见图2)x=x0+S0×cos(a0+β)y=y0+S0×sin(a0+β)其中β为偏角,S0为弦长,其值为:β=90×L0/(R×π)S0=2×R×sin(β)切线方位角:a= a0+2×β3) 缓和曲线(见图3)Xi’=L-L5/(40A2)+L9/(3456A8)-L13/(599040A12)+……Yi’=L3/(6A2)-L7/(336A6)+L11/(42240A10)-……L=|Li-L0| A=上述直线段和圆曲线段可直接计算出中桩坐标,但缓和曲线由于采用切线正支距法,是以直缓或缓直为原点的直角坐标系,还必须用坐标平移和旋转计算出该点在大地平面直角坐标系XOY中的坐标(x,y),公式为:x= x0+ Xi’cos(a0)- Yi’sin(a0)y= y0+ Yi’sin(a0)+ Yi’cos(a0)其转换后的切线方位角为:a=a0+180±L2/(3A2)1.2边桩坐标计算边桩坐标计算利用计算出来的中线坐标及其切线方位角,按az=a-90……左边桩方位角ay=a+90……左边桩方位角以及边桩至中桩距离Sb,推算边桩坐标:Xz(y)=x中+Sb×cos(az(y))Yz(y)=y中+Sb×sin(a z(y))2Excel VBA与Excel工作表的关联Office Excel工作簿中包含若干工作表,各工作表之间既相互独立,又相互关联,同时各工作表与Excel VBA又相互关联,因此只要在工作表上输入路线要素及计算桩号,通过VBA编程,就可通过VBA宏坐标计算将计算结果导入工作表。
坐标正算、反算计算方法及在Excel中的VBA编程

坐标正算、反算计算方法及在Excel 中的VBA 编程测量中经常需要将某点相对坐标系坐标转换成线路的里程、偏距,或根据线路某一里程偏距计算出对应的相对坐标系坐标,为寻求一种快速简单高效的计算方法,本文对线路正算反算的原理进行了阐述,并结合Excel VBA 编程,将编程和Excel 的拖拽的功能相结合,编制出实用计算表,特别适用于需要大量计算边桩、围护桩的情况。
关键词:坐标方位角坐标正算坐标反算 V AB 编程循环迭代直接算法一、坐标方位角的反算1.坐标方位角反算如图1所示,已知点A 、B 的坐标,求直线AB坐标方位角α。
图1坐标方位角反算直线AB 之间的坐标增量:AB B AAB B Ax x x y y y ∆=−∆=−当0,0AB AB x y ∆>∆>时,角α位于第一象限角:arctan ABABy x α∆=∆当0,0AB AB x y ∆<∆>时,角α位于第二象限角:arctan 180AB ABy x α∆=+°∆当0,0AB AB x y ∆<∆<时,角α位于第三象限角:arctan 180AB ABy x α∆=+°∆当0,0AB AB x y ∆>∆<时,角α位于第二象限角:arctan360AB AB y x α∆=+°∆2.坐标方位角反算的VBA 编程可用VBA 将上述过程定义为一个名为angel()的函数,代码如下:Function angel(x0As Double, y0 As Double, x1 As Double, y1 As Double) As Double dx = x1- x0dy = y1- y0If dx > 0 And dy > 0 Thenangel = Atn(dy / dx)End IfIf dx < 0 And dy > 0 Thenangel = Atn(dy / dx) + 3.14159265358979End IfIf dx < 0 And dy < 0 Thenangel = Atn(dy / dx) + 3.14159265358979End IfIf dx > 0 And dy < 0 Thenangel = Atn(dy / dx) + 3.14159265358979 * 2End IfEnd Function二、直线段坐标正算与反算1.直线段正算图2直线段计算已知HZ 点坐标(x1,y1)、里程N HZ ,ZH 点坐标(x2,y2),正算时已知P 点对应的中桩里程Np 和偏距e (规定沿着线路前进方向,左边偏距为负,右边偏距为正),Np>N HZ ,求P 点对应的坐标。
ExcelVBA编程,一个系统的学习路线图

ExcelVBA编程,一个系统的学习路线图昨天和前天都讲述了如何高效学习excel,今天我重点讲讲excel 高手经常会用到的vba工具。
正如深度工作一书中所说,想把复杂的问题简单化,首要条件是掌握复杂工具。
这也是现代人较古代人工作效率大大提升的原因根本所在。
针对财会初学者,根据这个路线图去学习vba,你很快就可以出师了。
系统:Windows 7软件:Excel 2016•今天讲讲如何学习VBA,当然是结合我个人实际使用的学习路线•学习目标:重复工作一键搞定•VBA其实功能是非常强大的,涉及的范围还是很广泛的,本豆这里重点说说如何用其来提高工作效率,减少重复划重点:这个学习路径不是要把你培养成绝世高手,但是好在学的快,日常工作也可以信手拈来学习路径图可以点击查看原图放大学习框架1.学习路线主体分为3大部分:工具篇,逻辑结构篇,函数+对象篇2.代码这种,有一个明确的学习路线很重要,会事半功倍,然后就是实战3.如何实战?这个也有快速的方法,后期我们会推出一个项目,希望大家关注工具篇:工欲善其事必先利其器1.一是Excel自带的VBE,如何使用2.二是善用文本编辑器,本豆这边推荐:Notepad++,免费易学3.三是Excel自带录制宏功能,讲真VBA有的时候代码真心长,实在记不了,咋整•建立自己的库,善于总结•实在不记得了,随手来录制一段宏,直接复制,稍作修改即可1.最后一个:流程图,可以通过工具graphviz,当你的项目不是很大的时候,也可以通过手画草图•把思路理清很关键,代码其实本质上来说就是将你的思路翻译成一种语言•同样的事情,不用VBA依然也可以实现,只要你逻辑清晰,代码写起来就so so 快•graphviz这个工具画的图可能不是那么好看,但是逻辑清晰,关键它是用dot语言来写的,然后渲染即可,迭代非常快,上边学习路径图就是采用dot语言来写的。
逻辑结构篇:1.大思路:输入-处理-数据库-输出2.三大结构:顺序-判断-循环3.单模块下怎么布局Sub,Function4.调试和维护代码的成本,如何使用:缩进-空行-注释,使你的代码清晰易懂5.二项结构:程序-数据库函数+对象篇1.常用函数2.常用对象3.思路出来后,就实现部分了,函数和对象就像那实际干活的小工这是第一稿,后续我还会根据工作经验,持续去优化,谢谢大家关注。
道路坐标计算excel

道路坐标计算excel道路坐标计算是一种常见的数据处理方法,用于计算道路上的各个位置的经纬度坐标。
这种计算方法可以帮助我们确定道路上的具体位置,方便导航和定位等应用。
在实际的道路坐标计算中,常用的方法是使用Excel进行处理。
Excel是一款功能强大的电子表格软件,可以方便地进行数据处理和计算。
下面将介绍如何使用Excel进行道路坐标计算。
首先,我们需要准备好待处理的数据。
在Excel中,可以将道路划分为多个路段,并为每个路段标注起点和终点的位置。
这些位置可以用经度和纬度来表示。
接下来,我们可以使用Excel中的函数进行坐标计算。
常用的函数包括经纬度转换函数和距离计算函数。
1. 经纬度转换函数在进行坐标计算时,经纬度间的转换是非常重要的一步。
Excel提供了很多函数来进行经纬度转换,例如DEGREES、RADIANS、SIN、COS、TAN等函数。
通过这些函数的组合,我们可以将经纬度导航到计算坐标。
2. 距离计算函数除了经纬度转换,计算两点之间的距离也是道路坐标计算的重要一环。
Excel提供了很多函数来计算两点之间的距离,例如ACOS、COS、SIN、SQRT等函数。
通过这些函数的组合,我们可以计算出两点之间的距离。
在进行坐标计算之前,我们需要对数据进行预处理。
这包括将经纬度数据转换为数字格式,并确定坐标轴的单位。
在Excel 中,我们可以使用“格式单元格”功能,将经纬度数据转换为数字格式,以便进行后续计算。
接下来,我们可以使用Excel的函数来进行道路坐标计算。
以计算两点之间的距离为例,可以使用类似以下的公式:=ACOS(COS(RADIANS(90-纬度1))*COS(RADIANS(90-纬度2))+SIN(RADIANS(90-纬度1))*SIN(RADIANS(90-纬度2))*COS(RADIANS(经度1-经度2)))*6371在这个公式中,纬度和经度分别用纬度1、经度1、纬度2、经度2来表示。
Excel 公路中线 坐标计算

:Excel 公路中线坐标计算现阶段我国公路工程中已普遍使用大地坐标进行线型的控制及测设,在施工中经常要对中线坐标进行复核、加密,才能满足公路工程施工的需要。
本文是结合公路工程的实际需要,利用Exce电子表格制作的用于由直线、圆曲线、缓和曲线组成的一般公路线型中桩、边桩等计算的通用模版,用于减轻计算工作的劳动强度和提高计算结果的准确度。
一、采用公式1 直线段1.1 中桩坐标计算公式1.2 边桩坐标计算公式2 缓和曲线段2.1 中桩坐标计算公式当P点位于顺时针方向时,其方位角为αE→p=αA→B+90°;当P点位于逆时针方向时,其方位角为αE→p=αA→B-90°。
2.2 边桩坐标计算公式3 圆曲线段3.1 中桩坐标计算公式当E点位于顺时针方向时取“+”,当E点位于逆时针方向时取“-”。
3.2 边桩坐标计算公式XP、YP——未知点P的坐标X1、Y1——各线型起点的坐标(第二曲线段为终点)XA、YA、XB、YB——P点边桩A点、B点的坐标(A为左侧、B为右侧)α1→2——直线段起点的方位角αA→B——各线形起点的切线方位角(第二曲线段为终点)L——P点距各线形起点的长度LS——缓和曲线段缓和曲线长R——各曲线段的半径β——P点的切线角(曲线左转时取“-”、曲线右转时取“+”)T1、T2——P点至边桩A、B的距离(A为T1、B为T2)二、计算模板的建立步骤表1-1表1-21.新建一个工作薄,在其中输入如表1所示的内容;2. 选中工作表A列,打开格式菜单,选中“单元格”,在单元格菜单中选中“数字”栏,自定义单元格格式为“K000+000.000”。
按此方法分别将其他列设置为如表1所示单元格格式;3. 将“4”行做为路线起点数据行,在“5”行中进行公式编辑;4.在“J5”单元格中输入“=IF(C5=4,RADIANS(IF((G5+H5/60+I5/60/60)<180,(G5+H5/60+I5/60/60)+180,(G5+H5/60+I5/60/60)-18 0)),IF(C5=5,RADIANS(IF(B5=0,G5+H5/60+I5/60/60-E5/2/D5*180/PI(),G5+H5/60+I5/60/60+E5/2/D5*180 /PI())),RADIANS(G5+H5/60+I5/60/60)))”;5.在“K5”单元格中输入“=A5-$A$4”;6.在“L5”单元格中输入“=$L$4+IF(C5=1,K5*COS(J5),IF(C5=2,2*D5*SIN(K5/2/D5)*IF(B5=0,COS(J5-K5/2/D5),COS(J5+K5/2/D5) ),IF(C5=3,(K5-K5^5/40/D5^2/E5^2)*COS(J5)+(K5^3/6/D5/E5-K5^7/336/D5^3/E5^3)*IF(B5=0,COS(J5-90 *PI()/180),COS(J5+90*PI()/180)),IF(C5=4,(K5-K5^5/40/D5^2/E5^2)*COS(J5)+(K5^3/6/D5/E5-K5^7/33 6/D5^3/E5^3)*IF(B5=0,COS(J5-90*PI()/180),COS(J5+90*PI()/180)),2*D5*SIN(K5/2/D5)*IF(B5=0,COS( J5-K5/2/D5),COS(J5+K5/2/D5))))))”;7.在“M5”单元格中输入“=$M$4+IF(C5=1,K5*SIN(J5),IF(C5=2,2*D5*SIN(K5/2/D5)*IF(B5=0,SIN(J5-K5/2/D5),SIN(J5+K5/2/D5) ),IF(C5=3,(K5-K5^5/40/D5^2/E5^2)*SIN(J5)+(K5^3/6/D5/E5-K5^7/336/D5^3/E5^3)*IF(B5=0,SIN(J5-90 *PI()/180),SIN(J5+90*PI()/180)),IF(C5=4,(K5-K5^5/40/D5^2/E5^2)*SIN(J5)+(K5^3/6/D5/E5-K5^7/33 6/D5^3/E5^3)*IF(B5=0,SIN(J5-90*PI()/180),SIN(J5+90*PI()/180)),2*D5*SIN(K5/2/D5)*IF(B5=0,SIN( J5-K5/2/D5),SIN(J5+K5/2/D5))))))”;8.在“N5”单元格中输入“=IF(B5=0,J5-RADIANS(IF(C5=2,K5/D5*180/PI(),IF(C5=3,K5^2/2/D5/E5*180/PI(),IF(C5=4,K5^2/2/D5 /E5*180/PI(),IF(C5=5,K5/D5*180/PI()))))),J5+RADIANS(IF(C5=2,K5/D5*180/PI(),IF(C5=3,K5^2/2/D5 /E5*180/PI(),IF(C5=4,K5^2/2/D5/E5*180/PI(),IF(C5=5,K5/D5*180/PI()))))))”;9.在“P5”单元格中输入“=IF(C5=4,L5+O5*COS(N5+90*PI()/180),L5+O5*COS(N5-90*PI()/180))”;10.在“Q5”单元格中输入“=IF(C5=4,M5+O5*SIN(N5+90*PI()/180),M5+O5*SIN(N5-90*PI()/180))”;11.在“S5”单元格中输入“=IF(C5=4,L5+O5*COS(N5-90*PI()/180),L5+O5*COS(N5+90*PI()/180))”;12.在“T5”单元格中输入“=IF(C5=4,M5+O5*SIN(N5-90*PI()/180),M5+O5*SIN(N5+90*PI()/180))”;13.选定“5行”向下复制到表格最后一行;14.点击“文件”菜单中的“另存为”选项,输入文件名为“坐标计算”在文件类型中选择为“模版”并点击“保存”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小白自学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)[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)为空的话,这时候下一步,这里的双引号是空的意思。
下面,好菜上场了,个人感觉这个非常有用的规则,解密了③代码的()问题。