2024年9月13日发(作者:)
经济建设
Excel表格中VBA编程应用实例
摘要:在Excel表格中用VBA程序设计模板文件,实现页面能显示带括号及注释的计算表达式,跨页gl用,变量引用,构建专用
函数等功能,方便工程算量。
关键词:Excel表格显示计算表达式专用函数跨页引用变量引用
刖旨:
Fori=1 ToLen(S1
IfMid(S,i,1)=”<”Then
Do
工程算量是工程预结算的基础,基于CAD平台的专业算量软件的出现,
是工程造价领域的又一次革命。在专业算量软件还未全面普及的情况下,还
i=i+1
有相当一部分造价人员,选择科瑞计算簿和Excel表格作为工程算量的工具。
虽然,Excel表格在运算方面准确、便捷,但是,在显示计算表达式及文字标志
注释方面,不够直观,以致于在检查、复核较为复杂的计算式时,失去优势。有
感于此,本人在Excel表格中用VBA程序设计了一个模板文件,旨在通过
Excel平台,实现能在页面显示计算式,而且能在计算表达式中采用大、中、小
If i>Len(S)Or Mid(S,i,1)=”<”Then:eacstr=”注释符错误!ll_Exit
Function k叩Until Mid(s,i,1)=”>”
Else
SS=SS+Mid(S,i,1)
EndIf
Next
括号,造价人员可根据需要构建自己的专用函数,可跨页引用,变量引用。总
之,能为习惯于使用Excel工具的人员提供更多的帮助。
一
、
模板文件的功能
IfTrim1 o Then SS一嚣娟!g(1ss.
If 热)0 Then SS= 鳓瓤ss, i
Ifnsele=1Orn le=2ltlen.
( )
1.以“<>”号替代“【】’’作为注释符,允许表达式中按习惯采用(、1、[、l、(、)
括号,小括号内可以继续采用小括号,并对其合法性进行校验。这一功能有利
于多个括号时的检查,使表达更清淅。
2.变量引用是减少工程量录入和增加工程量准确性的重要手段,模板文
SS= 骣 ss)
If ss= 函数错误开方值小于零 Then
£ = 函数错误开方值小于零”
ExitFtm ̄ion
EndIf
件允许使用变量引用,与科瑞类似,也存在差异。每次计算表达式允许十个初
始变量,用于填写建筑物特征等不须变化的量;每次计算表达式允许一个中
间计算变量。
3.自定义函数。EXCEL其实是一个平台,能否发挥其功能,取决于使用
者,模板文件允许使用者按自身应用需要,编写自定义函数,从而简化录入和
简化表达式。
If ss=1 数错误半径小于零 Then
efle,str=”函数错误半径小于零”
Exit Function
EndIf
IfSS=”弓函数错误”Then
eaestr:”弓函数错误”
Exit Function
二、使用说明
1.设定一个专用页面sheet,用以填定初始变量。在一个单元格中填人:
=
EndIf
BianL(B3,C3,B4,C4,B5,C5,B6,C6,B7,C7,B8,C8,B9,C9,BIO,CIO,B1 1,C i 1,
If ss= 乘方函数错误”Then
cacstr= 乘方函数错误
Exit Function
B12,C12)
说明:
EndIf
EndIf
BianL()模块负责产生一个专用字符串,计算模块 ̄aestr通过调用该字符
串,将初始变量引入,对表达式进行解释和替换。
B3单元填人变量名,即表达式中的中文或英文,c3为B3的计算用值,余
同。此处引用二十个单元格,共十个变量。当初始变量多于十个时,可以分组,
在多个单元格中用BianL产生专用字符串。
2.在计算结果单元格中填人:
Ifnsele=2Then
SS=ZDYHS(SS1
IfSS=”函数参数错误”Then cacstr=”函数参数错误l1.Exit Function
EndIf
St=SS
Huahao=0
Have=0
=cacs|r(参数1,参数2,参数3,参数4,参数5)
说明:
参数1:计算表达式单元格
参数2:绝对引用初始变量专用字符串所在单元。计算表达式不需要引用
时,填入空串””。
参数3:填0,或1,或2。0表示本次计算不考虑自定义函数,以加快计算速
度,1和2表示本次计算考虑自定义函数,其中1只调用Funzh 0模块,2调用
starl=0
starn=0
stark=0
stHave=0
FunzhO模块和ZDYHS()模块。将自定义函数模块分为两档,只是为了适合不
If Mid(St,k,1):”[”Or Mid(St,k,1)=”]”Or Mid(St,k,1)=”(”Or Mid(St,k,
同需要和加快速度而已,使用者可以按不同的需要进行程序变更。
1)=”)”OrMid(St,k,1)=”{T.OrMid(St,k,1)=”)..Then stringH=stringH+Mid
参数4和参数5为配合使用,将中间变量引入。参数4为计算式中引用的中
(st,k,1)
间变量名,参数5为该中间变量的值。
Next
For k=1 ToLen(St1
三、VBA程序
模板文件共用六个模块程序:cacsfr()、BianL()、ReBlg()、lYliclclh()、Funzh
()、ZDYHS(),鉴于篇幅,本文只提供eaestr()如下:
Public Function caestr(S,X,nsele,Midh,MidV)
F0r j=l To LsB 醇秘Is .|
If dL5臻l 瑶 j.1)。 ( "fhen:s £;=雾蕊;一l:l【1l珈a t 1
If 薹i威 l尊g ^】)= ) Then:5硌fl=取 一l lhI l【ao=1
If 嚣 £霹 lg J:1)= 【 Then:蕺∞ 盎聪曼f 一1:Have掌l
If d 嫩 J.1)= Then:取am 羁姗-1:Have 1
‘2 ‘
囵墨囝.墨
If d£str1ng琏J:I) l Then:. ̄rk—staark一1
经济建设
含括号!
If d(蹴lng J 1)= ) Then:stark;stark—I
If stark<0 Or starn<0 Or starl<0 Then cacstr=”),],)错误!'_=Exit Function
If Have=1 And stark<>0 Then cacstr=”),1交叉错误11.:Exit Function
IfHave=1 And stark=0ThenHave:=0
四、示例
1.安装工程中,有时会用专用的表页,对一些小电器进行统计,则町采
用中间变量的方式,引至计算式中
If Huahao=1 And(stark<>0 Or starn<>0)Then cacstr=”),],}错误!”:Exit
Function
2.以模板文件为例,在ZDYHS()巾已构造r函数:直方梁砼(轴}乏,扣长
1,扣长2,梁宽,梁深,扣板厚)和直方梁模(轴长,扣长l,扣长2,梁宽,梁深,扣板厚)
,
IfHuahao=1 Andfstark=0 And starn=01ThenHuahao=0
Next
则表达式:直方梁砼(45.2<A轴一F轴xl轴>,0.25<扣柱A柱>+0.5 4<柱><扣柱
BCDE>,0.65<扣柱F>,O.4<梁宽>,0.8<梁深>,0.t5<板厚>)计筒结果为
】0.9985m 。
If star <>0 Then sac#tr= [】错误f :Exit Ftmctioa
If stark<>0 Then g cstr= ()错误 .ExitFunction
If starl<>0 Then cacst = {j错误! :Exit Fu曲ct:on
Fat】 1 ToLeuCSS)
"IT; iid(SS.1 1)
复制表达式,将“砼”改为“模”直方梁模(45 2<A轴一F轴xl轴>,0 25<扣柱
A柱>+0.5 4<柱><扣柱BCDE> 0.65<扣柱F> O.4<梁宽> 0.8<梁深>,0.15<板厚
>)计算结果为71.915 Ill 。
如果没有调用初始变量和中间变量,计算单元格中填人=cac:str(E2,…’,2,
…’
,
IfTT= 【”orlq"=”( Then:TT= ( ・
Ifn= l”orTT;”) Then:丌= ) +
SSS SSS一丌
Nex卜
…’)则可,E2为计算式所在单元格,2表示调用ZDYHS()。
3 以模板文件为例,在Funzh()中已构造r函数:弓面积f半径表达式
弓高)则表达式:
If SSS= 111姐c
End Function
=0 Else cacstr=ADol ̄catiQnlE、 nla fSSS
弓面积f4,2) O.12<板厚>计算结果为1.179234m ,是半径4m、飘出2m和厚
度0.12m的弧形阳台板砼量。
4.表1是模块程序运行结果示例
其它模块说明:
BianL()对初始变量名按长度排序后,产生一个专用字符串;格式为:
变量数l变量1名l变量1值I变量1名长度1.._…
ReBlg()将专用字符串解开后对表达式进行替换。
五、小结
本模板文件与科瑞计算簿比较,有如下优缺点:
1 计算式表达可采用大中小括号,优于科瑞;
Middh()将表达式的中间变餐名替换为变量值。
Funzh()、ZDYHS()开放式f{定义函数,应用者可对其进行开发,函数的
表达格式为函数名(参数1,参数1,参数1,…),参数可以是计算式,但不能包
2 可构建白已的专用函数,优于科瑞;
3 中间变量引用不如科瑞方便,需要指定引用单元。但可跨页引用,则
优于科瑞。
袁1
字号 项置 箭缝 心号 丹-蔓采
直方粟毪 45.2<z、琢l>,o.25<船A>-O.5q<桂><蛔
BcDE>,0,55(妇F> O 4(壹>,0 8(;
2
3
C20置方粱
C20甄形鬃
O.1 扳>)
ll,00 m3
5.i7 m3
自定义函号f嗣
自定义嚣辱l用
计蕈港果 单龟 备注
: c2o直 粱 1:.OO 丑3 自烹义国辱!罚
【4s.2 ̄'-Fx:>一《O 25<妇^>_o. 4(控×妇
BCI ̄>-'0.65<扫F>):的.4,烹>¥ 0.B<瀑 O.i 5<板>
弧方桑 (40+5,35,0.是0.5,0.4 0.B'0.I5)
4 C20弧形阳台援 号蓄 4,2 粕。I2<扳覃>
直方桑馕(45.2<A轴、F轴慰辅> 0.2s<9:rl ̄A{耋
:.i8 t3 自定义两号}蜀
S 直=亨粟缜板 >.o. 4<垃>(妇挂BCI ̄>,0.65<妇1童F、,0。4<粟烹
》 0.8<粱源>,0.ZS<投孥>)
了1.92 m2 宜定义两号!焉
6 弧形鬟填板
鬃馕故安装合计
弧方桑攫(z2,3s,0 5 O s,0.4,0 8,0.:s1 0. 6 12.
82.68 it2
自定义硒弓I舄
8 单管荧玎安装 单譬荧玎台 诺见詹表>
{ 琶亳篇ni暮鍪>2<营
::l 十 幸『司受盂引用
9 D O毫绫曹畴装 D O^
>¥[3.4 s-2. 3 4一 . :.4 <孳l下>:一<甄爱奄箱n2
薅>[3-4-5- .4一 3. 1.4 3<号!下>:#4(营>j犍<蓐
>取4({曩》
:O .8o
D
lo zR喝 2.5穿管
3(竣).{2<管 l<缭> (4. i.4)<引下> 蛇<
3:I2+O0 瓤 串阍变量弓l雳
屡 4<
1:
I2
13
P :o。j掌水管安装
暖琶职
蹈嚣琢
PL-I、:6 [总意.o.5<埋±毫>:虬6(营>
4O,JlII>阜4o(-_ 事
匿匿职(舣m>
28 o。
5026.55
5o26.5S
韧妁变量辱l胃
l4
l5
正切∞寰
乘方45-0.23
5纽(3。) S毁t3O)馕示强(30)>
秉方(45,_o.23)<表示45-0.23>
O.S8
O,42
王6
17
13
一组胡女媛置引异l示铡
一级幻女姨量引用示铡
:蹑初蚰变量号l用示弱
2-惠- ̄c-2
2-晷离
建筑爱 -曩蕈费率
344.20
8O.00
5O 6O.OO
奶始变量号!嗣
胡始变置号l写
奶始变量浮l焉
。256・
本文发布于:2024-09-13 17:50:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1726221055385242.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |