Excel表格中VBA编程应用实例

阅读: 评论:0

2024年9月13日发(作者:)

Excel表格中VBA编程应用实例

经济建设 

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・ 

Excel表格中VBA编程应用实例

本文发布于:2024-09-13 17:50:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1726221055385242.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:计算   变量   函数
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23