VBA编程在路基工程数量计算中的应用

2014-05-09 08:25钮洪亮
交通科技 2014年1期
关键词:计算公式语句应用程序

钮洪亮 杨 武

(中交第二公路勘察设计研究院有限公司 武汉 430053)

在高速公路设计项目中,各种工程数量的计算与统计是项重要而又繁琐的工作。在路基路面设计工作中,很多设计内容都是以设计通用图纸为基础,依据设计图确定的单位工程数量逐段计算并统计全线的工程量,编制工程数量总表,如路基防护工程数量表、路基排水工程数量表、路面工程数量表,等等。对于这些工程数量的计算与统计,Micr osoft公司的EXCEL电子表格软件是最适合的辅助工具,在目前的设计工作中发挥了巨大的作用。但是多数设计人员只运用了EXCEL提供的内置函数和方法,尤其以嵌套的IF语句居多。虽然可以解决一些问题,但是存在计算公式的可读性差、检查和复核困难、嵌套层数有限等一些问题,而且对于一个逻辑判断较复杂的计算过程,仅通过常规的内置函数无疑增加了公式编写的难度。因此,能够利用EXCEL提供的VBA编程技术,编制适用于特定要求的自定义函数显得尤为重要,其不仅可以实现复杂的计算,而且便于计算公式的修改和维护,代码可读性高,有利于高效率、高质量地完成各项工程数量的计算工作。本文介绍了在EXCEL中运用VBA编程实现工程数量计算与统计的方法与技巧,并以巴达高速公路两阶段施工图设计项目中的路基防护工程数量计算为例,介绍其在实际工程中的应用效果。

1 EXCEL中VBA编程简介

VBA是Visual Basic f or Application的简称,是内嵌于 Microsoft Excel中的程序语言,它的语法结构与Visual Basic极其相似,是为了更高效地使用Excel应用程序而有针对性地优化设置过的Visual Basic。VBA的主要任务是组织或集合Excel程序的功能,它无法脱离Excel环境独立运行[1]。

EXCEL中的VBA有着丰富的类库和组件,通过VBA编程可以实现功能强大且复杂的EXCEL扩展应用程序。而针对高速公路设计项目中的工程数量计算而言,仅需其中几条简单的语法即可完成几乎所有的工程数量计算工作,下面对所需的语法归纳总结如下。

1.1 变量的声明

语法:Di m par a m As Type

Di m是声明局部变量的关键字,par a m是变量名,As Type是数据类型关键字,可以是As Integer(整数)或As Double(双精度浮点数)或As String(字符串)等。

1.2 函数的定义

语法:Function f unna me(par a m As Type,……)As Type

End Function

Function是声明一个函数的关键字,f unname是函数名,par am是函数所需要的形参,As Type代表各自的数据类型(同上)。

1.3 条件语句

语法:IF(condition)Then

tr ue_instr uctions

Else f alse_instr uctions

End If

IF-Then是条件判断构造语句,condition为条件表达式,tr ue时执行tr ue_instr uctions语句,

false时执行f alse_instr uctions语句。适用于2

种或3种选择的情况。

1.4 选择语句

语法:Select Case testex pression

Case ex pressionlist-n

Instr uctions-n

Case Else

Def ault_instr uctions

End Select

Select Case构造用于在3个或更多的选项之间做选择的情况,可用于替代多层IF嵌套语句。

1.5 循环语句

语法:For counter =start To end Step stepval

instr uctions

Next counter

For-Next语句是应用最多的一种简单循环语句。counter以start为起点,以stepval为步距,到End终止循环运行。

2 自定义函数的步骤与方法

在EXCEL中运用VBA编程实现工程数量计算的主要方法就是自定义函数。用VBA编制的自定义函数与EXCEL中的内置函数(如:SUM()求和函数[2])是等价的,应用方法也是相同的。编制一个有自定义函数名和特定运算规则的VBA函数的基本步骤与方法如下。

(1)启动VBA编程环境。选择EXCEL应用程序(2003版)中的“工具→宏→Visual Basic编辑器”(或Alt+F11快捷键)打开VBA编程环境。然后在左侧“工程资源管理器”(若没有可通过点击“视图→工程资源管理器”开启)窗口中右键单击EXCEL文档名称,然后选择“插入→模块”菜单,创建一个模块(默认名称为“模块1”,可在属性面板中重命名)。此时右侧出现一个可供输入代码的窗口(见图1),完成VBA编程环境的启动。

图1 VBA编程环境界面

(2)编制代码。在代码窗口中按照VBA语法规则及用户意图输入代码。下面以路基防护数量计算中的三维网植草防护数量计算为例,说明自定义一个函数的方法,具体代码及说明见表1。

表1 示例代码与说明表

(3)使用自定义函数。在Excel单元格编辑器中输入“=SWWFH($A2,$B2,$C2,D$1)”即可,$A2,$B2,$C2和D$1单元格分别为lengt h(长度),height(边坡高度),sl ope(边坡坡率),mat Type(材料类型)参数的输入值。

3 工程实例解析

在实际的高速公路工程数量计算中,最为常用的语句就是条件判断语句(IF语句),但往往因一张工程数量表中涉及到的工程类型很多,不得不采用多层嵌套的IF语句才能够完成数量计算。这种传统的计算方法不仅受到EXCEL应用程序本身对IF嵌套层数的限制,而且对于计算公式的复核、修改和维护都变得很困难,尤其在每种工程类型采用各自单独的计算公式时,很容易因工程类型与计算公式不一致而导致工程数量计算结果有误。利用EXCEL应用程序的VBA编制自定义函数,可以轻松地避免以上问题,而且对于一个具体的工程数量计算问题,经过对其计算特点的分析,合理地组织程序结构,便可得到一个逻辑严紧、层次清晰、易于修改维护、计算准确、应用便捷的工程数量计算表。下面以在巴中至达州高速公路两阶段施工图设计中采用VBA编程实现的路基防护工程数量计算表为例,介绍所采用的程序结构与应用效果。

路基防护工程数量计算表中一般都会包括多种防护形式,每种防护形式都有各自的材料数量,不同防护形式可能包括相同的材料类型(如M7.5浆砌片石),为了采用统一的计算公式获得所有防护类型的所有工程数量,设计如下程序结构:

'按防护类型计算数量

Select Case typeProj ect

Case…

Case"02-三维挂网" '挂三维网喷播植草

Quantit y =SWWF H(length,height,slope,mat-Type)

Case…

End Select

End Function

'挂三维网喷播植草工程数量

Private Function SWWF H (length…,mat Type As String)As Double

Select Case mat Type

Case"三维网" '三维网面积

SWWFH =SWWF H =area*1.0354 'm2

Case…

End Select

End Function

…… 其他防护类型工程数量计算函数

'获取工程数量主函数

Public Function Quantity(start Stake … ,typeP-roj ect As String,mat Ty pe As String)As Double

Quantity()函数为数量计算的主函数,也是在EXCEL表格中调用的唯一函数,采用公有(Public)属性,其他函数(如SWWFH())在 EXCEL表格中不需要调用,只被Quantity()主函数引用,采用私有(Private)属性。Quantity()主函数除了基本的起点桩号、终点桩号、边坡高度、边坡坡率等参数外,另外还包括了typePr oject防护形式和mat Type材料类型2个参数,通过2次Select Case条件选择获得某种防护形式中的某种材料的数量。在EXCEL表格所有的工程数量单元格中调用Quantity()函数,利用单元格数据的有效性及锁定功能,即可得到应用便捷的路基防护工程数量计算表,见图2。

图2 利用VBA编程实现的路基防护工程数量表

4 结论

通过在巴中至达州高速公路设计项目中对利用VBA编程实现路基防护工程数量计算的实际应用,得出如下结论:

(1)利用EXCEL应用程序中的VBA编程功能,可以有效地避免采用多层嵌套IF语句所带来的不便,有利于提高工作效率和计算的准确性。

(2)利用EXCEL应用程序中的VBA编程功能,可以实现统一的计算函数,避免了一个EXCEL表中因包含多个计算公式而带来的混淆计算错误问题。

(3)利用EXCEL应用程序中的VBA编程功能,可以将所有的计算代码集中在一起,利用Select Case语句代替IF语句,使代码的层次更加清晰,可读性高,便于公式的复核、修改和维护。

(4)结合EXCEL应用程序中的单元格数据有效性、锁定和表格保护等功能,能够实现类似程序输入界面的计算表格,使数据输入区与计算结果区完全分开,有效地避免了对计算公式的无意修改,同时参数输入集中,操作便捷。

(5)能够适用于高速公路设计项目中所有的工程数量计算,涉及到的VBA语法少而简单,便于推广应用。

[1] John Walkenbach.Excel 2003高级 VBA编程宝典[M].北京:电子工业出版社,2005.

[2] John Walkenbach.Excel 2002公式与函数应用宝典[M].北京:电子工业出版社,2002.

猜你喜欢
计算公式语句应用程序
电机温升计算公式的推导和应用
重点:语句衔接
2019离职补偿金计算公式一览表
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
如何搞定语句衔接题
采用初等代数推导路基计算公式的探讨
关于节能评估中n值计算公式及修正
三星电子将开设应用程序下载商店
作文语句实录