用VBA实现定期检验中的计算.docx

上传人:b****2 文档编号:3097646 上传时间:2023-05-05 格式:DOCX 页数:19 大小:131.03KB
下载 相关 举报
用VBA实现定期检验中的计算.docx_第1页
第1页 / 共19页
用VBA实现定期检验中的计算.docx_第2页
第2页 / 共19页
用VBA实现定期检验中的计算.docx_第3页
第3页 / 共19页
用VBA实现定期检验中的计算.docx_第4页
第4页 / 共19页
用VBA实现定期检验中的计算.docx_第5页
第5页 / 共19页
用VBA实现定期检验中的计算.docx_第6页
第6页 / 共19页
用VBA实现定期检验中的计算.docx_第7页
第7页 / 共19页
用VBA实现定期检验中的计算.docx_第8页
第8页 / 共19页
用VBA实现定期检验中的计算.docx_第9页
第9页 / 共19页
用VBA实现定期检验中的计算.docx_第10页
第10页 / 共19页
用VBA实现定期检验中的计算.docx_第11页
第11页 / 共19页
用VBA实现定期检验中的计算.docx_第12页
第12页 / 共19页
用VBA实现定期检验中的计算.docx_第13页
第13页 / 共19页
用VBA实现定期检验中的计算.docx_第14页
第14页 / 共19页
用VBA实现定期检验中的计算.docx_第15页
第15页 / 共19页
用VBA实现定期检验中的计算.docx_第16页
第16页 / 共19页
用VBA实现定期检验中的计算.docx_第17页
第17页 / 共19页
用VBA实现定期检验中的计算.docx_第18页
第18页 / 共19页
用VBA实现定期检验中的计算.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

用VBA实现定期检验中的计算.docx

《用VBA实现定期检验中的计算.docx》由会员分享,可在线阅读,更多相关《用VBA实现定期检验中的计算.docx(19页珍藏版)》请在冰点文库上搜索。

用VBA实现定期检验中的计算.docx

用VBA实现定期检验中的计算

用VBA实现压力容器压力管道定期检验中的计算

云南云天化无损检测有限公司陈兴友

摘要:

Excel,VBA,压力容器,压力管道,定期检验,计算。

VBA是VisualBasicForApplications的简称,它是微软公司开发,建立在Office中的一种应用程序开发工具,是一种程序语言。

在Excel中,利用VBA可以有效扩展Excel的功能,设计和构建人机交互界面,打造自己的管理系统,帮组Excel用户更有效地完成一些基础操作、函数公式等很难完成的任务。

在压力容器、压力管道定期检验中,经常遇到各类计算,当从现场采集各类数据后,要迅速的得到结果,就需要借助VBA。

本文介绍通过ExcelVBA实现快速计算功能。

定期检验中的计算主要有:

压力容器:

1、强度校核;2、凹坑G0计算;3、非圆形缺陷定级;压力管道:

1、强度校核;2、未熔合定级;3、局部减薄计算。

下面分别介绍如下:

1、压力容器强度校核

分别按应用较多的部件进行设计:

内压圆筒、内压球壳、内压椭圆封头。

椭圆封头把标准封头和非标准封头分别列开计算。

其他按顺序分别计算即可。

下图为典型的计算过程:

2、压力容器无量纲G0计算

先设计输入项:

条件判断与计算

1-4项为手工判断,5-8项为程序自动判断。

G0=C/T*(A/(RT)^0.5,G0通过需程序自动计算,G0<0.1,则凹坑允许存在。

程序部分代码:

Range("Q15").Value="通过"

Range("Q15").Font.Bold=True

Range("Q15").Font.color=RGB(255,0,0)

G=c*a/(t*(R*t)^0.5)‘计算G0

Range("Q16").Value=G‘为单元格Q16复制

Range("Q16").Font.Bold=True

Range("Q16").Font.color=RGB(255,0,0)

Range("Q17").Font.Bold=True

Range("Q17").Font.color=RGB(255,0,0)

IfG<0.1Then

Range("Q17").Value="允许"‘判断结果

ElseIfG>=0.1Then

Range("Q17").Value="不允许"

EndIf

3、压力容器非圆形缺陷定级

非圆形缺陷定级主要指:

未熔合、未焊透、条状夹渣。

分别按一般压力容器和有特殊要求的压力容器进行计算。

我们看一般压力容器纵缝未熔合定级(其他类同),H≤0.1t且H≤2,L≤2t时定3级(H为缺陷自身高度,L为缺陷长度,t为板厚)。

那么超出上述尺寸应该定4级,低于上述尺寸应该定2级。

我们可以用一个函数来实现:

PublicFunction容器未熔合a(H,L,tAsSingle)AsString

IfH=""Then

容器未熔合a="--级"

GoToEsc

ElseIfH<=0.1*tAndH<=2AndL<=0.67*tThen’定2级的情况

容器未熔合a="2级"

ElseIfH<=0.1*tAndH<=2AndL<=2*tThen’定3级的情况

容器未熔合a="3级"

Else

容器未熔合a="4级"

EndIf

Esc:

EndFunction

实现的界面效果:

4、压力管道强度校核

强度校核采用GB/T20801-2006的计算公式:

tw=PD/(2(Sφ/I+PY)),直管和弯头用同一公式;当选定为直管时,系数I为1。

界面设计为同一个界面,方便了计算:

选择单元格E3(直管或弯头)时,计算代码:

PrivateSubWorksheet_Change(ByValTargetAsRange)

IfNotIntersect(Target,Range("E3"))IsNothingThen

IfRange("E3").Value="直管"Then

Range("E14").Value=1‘如果选择直管,单元格E14=1(即I=1)

ElseIfRange("E3").Value="弯头"Then

Range("E14").Formula="=(4*E12/E7-1)/(4*E12/E7+2)"

‘如果选择弯头,则通过公式计算I的值。

EndIf

EndIf

EndSub

5、压力管道未熔合定级

通过如下函数Fusionx,实现表6的定级功能:

表6 各级管道所允许的单个焊接接头中未熔合自身高度的最大值

壁厚

2级

3级

t<2.5mm

存在未熔合时,定为4级

2.5mm≤t<4mm

不超过0.15t且不超过0.5mm不影响定级;否则定为4级

4mm≤t<8mm

0.15t与1.0mm中的较小值

0.20t与1.5mm中的较小值

8mm≤t<12mm

0.15t与1.5mm中的较小值

0.20t与2.0mm中的较小值

12mm≤t<20mm

0.15t与2.0mm中的较小值

0.20t与3.0mm中的较小值

t≥20mm

3.0mm

0.20t与5.0mm中的较小值

PublicFunctionFusionx(ByValGCAsString,ByValD,ByValt,ByValL,ByValHAsSingle)AsString

DimcAsSingle

DimjAsInteger

ConstPIAsSingle=3.14159

c=PI*D

IfGC="GC1"AndL>0.5*cThen

Fusionx="GC1级管道,当单个焊接接头未熔合的总长度大于焊接接头长度的50%时,定4级。

"

ElseIfGC=""Then

Fusionx="--"

ElseIfGC="GC1"OrGC="GC2"OrGC="GC3"Then

SelectCaset

Case0To2.49

IfL>0Then

Fusionx="存在未熔合时,定4级"

EndIf

Case2.5To3.99

IfH<=0.15*tAndH<0.5Then

Fusionx="不超过0.15t且不超过0.5mm不影响定级"

Else

Fusionx="超过0.15t或0.5mm,定4级"

EndIf

Case4To7.99

IfH<=0.15*tAndH<1#Then

Fusionx="0.15t与1.0mm中的较小值"

ElseIfH<=0.2*tAndH<1.5Then

Fusionx="0.20t与1.5mm中的较小值"

Else

Fusionx="超过0.20t与1.5mm中的较小值"

EndIf

Case8To11.99

IfH<=0.15*tAndH<1.5Then

Fusionx="0.15t与1.5mm中的较小值"

ElseIfH<=0.2*tAndH<2#Then

Fusionx="0.20t与2.0mm中的较小值"

Else

Fusionx="超过0.20t与2.0mm中的较小值"

EndIf

Case12To19.99

IfH<=0.15*tAndH<2#Then

Fusionx="0.15t与2.0mm中的较小值"

ElseIfH<=0.2*tAndH<3#Then

Fusionx="0.20t与3.0mm中的较小值"

Else

Fusionx="超过0.20t与3.0mm中的较小值"

EndIf

CaseIs>=20

IfH<3#Then

Fusionx="超过3.0mm"

ElseIfH<=0.2*tAndH<5#Then

Fusionx="0.20t与5.0mm中的较小值"

Else

Fusionx="超过0.20t与5.0mm中的较小值"

EndIf

EndSelect

EndIf

EndFunction

操作界面如下:

6、压力管道局部减薄计算

局部减薄计算是所有计算中最为复杂的计算。

涉及的参数多,过程复杂。

首先看看输入参数(7个):

下面是过程参数与计算结果:

通过函数score实现定级:

PublicFunctionscore(GC,p,bAsString,t,c,HAsSingle)AsString

Application.VolatileTrue

SelectCaseGC

CaseIs=""

score="-级"

'GC1管道

CaseIs="GC1"

'P<0.3PL0条件

Ifp="P<0.3PL0"Then

SelectCaseb

CaseIs="B/(ΠD)≤0.25"

IfH<=(0.3*t-c)Then

score="2级"

ElseIfH<=(0.35*t-c)Then

score="3级"

Else

score="4级"

EndIf

CaseIs="0.25

IfH<=(0.2*t-c)Then

score="2级"

ElseIfH<=(0.3*t-c)Then

score="3级"

Else

score="4级"

EndIf

CaseElse

IfH<=(0.15*t-c)Then

score="2级"

ElseIfH<=(0.2*t-c)Then

score="3级"

Else

score="4级"

EndIf

EndSelect

EndIf

'***********************************

'0.3PL0

Ifp="0.3PL0

Ifb="B/(ΠD)≤0.25"Then

IfH<=(0.15*t-c)Then

score="2级"

ElseIfH<=(0.2*t-c)Then

score="3级"

Else

score="4级"

EndIf

ElseIfb="0.25

IfH<=(0.1*t-c)Then

score="2级"

ElseIfH<=(0.15*t-c)Then

score="3级"

Else

score="4级"

EndIf

EndIf

EndIf

'*************************************

'GC2或GC3管道

CaseIs="GC2","GC3"

'P<0.3PL0条件

Ifp="P<0.3PL0"Then

SelectCaseb

CaseIs="B/(ΠD)≤0.25"

IfH<=(0.33*t-c)Then

score="2级"

ElseIfH<=(0.4*t-c)Then

score="3级"

Else

score="4级"

EndIf

CaseIs="0.25

IfH<=(0.25*t-c)Then

score="2级"

ElseIfH<=(0.33*t-c)Then

score="3级"

Else

score="4级"

EndIf

CaseElse

IfH<=(0.2*t-c)Then

score="2级"

ElseIfH<=(0.25*t-c)Then

score="3级"

Else

score="4级"

EndIf

EndSelect

EndIf

'***********************************

'0.3PL0

Ifp="0.3PL0

Ifb="B/(ΠD)≤0.25"Then

IfH<=(0.2*t-c)Then

score="2级"

ElseIfH<=(0.25*t-c)Then

score="3级"

Else

score="4级"

EndIf

ElseIfb="0.25

IfH<=(0.15*t-c)Then

score="2级"

ElseIfH<=(0.2*t-c)Then

score="3级"

Else

score="4级"

EndIf

EndIf

EndIf

CaseElse

score="-级"

'MsgBox"请用下拉菜单输入管道级别!

"

EndSelect

EndFunction

PublicFunctionscoreN(GC,p,bAsString,t,c,HAsSingle)AsString

Application.VolatileTrue

'GC1管道

IfGC=""Then

scoreN="无"

EndIf

IfGC="GC1"Then

'P<0.3PL0条件

Ifp="P<0.3PL0"Then

SelectCaseb

CaseIs="B/(ΠD)≤0.25"

IfH<=(0.3*t-c)Then

scoreN="0.30t-C"

ElseIfH<=(0.35*t-c)Then

scoreN="0.35t-C"

Else

scoreN="超标"

EndIf

CaseIs="0.25

IfH<=(0.2*t-c)Then

scoreN="0.20t-C"

ElseIfH<=(0.3*t-c)Then

scoreN="0.30t-C"

Else

scoreN="超标"

EndIf

CaseElse

IfH<=(0.15*t-c)Then

scoreN="0.15t-C"

ElseIfH<=(0.2*t-c)Then

scoreN="0.20t-C"

Else

scoreN="超标"

EndIf

EndSelect

EndIf

'***********************************

'0.3PL0

Ifp="0.3PL0

Ifb="B/(ΠD)≤0.25"Then

IfH<=(0.15*t-c)Then

scoreN="0.15t-C"

ElseIfH<=(0.2*t-c)Then

scoreN="0.20t-C"

Else

scoreN="超标"

EndIf

ElseIfb="0.25

IfH<=(0.1*t-c)Then

scoreN="0.10t-C"

ElseIfH<=(0.15*t-c)Then

scoreN="0.15t-C"

Else

scoreN="超标"

EndIf

EndIf

EndIf

EndIf

'*************************************

'GC2或GC3管道

IfGC="GC2"OrGC="GC3"Then

'P<0.3PL0条件

Ifp="P<0.3PL0"Then

SelectCaseb

CaseIs="B/(ΠD)≤0.25"

IfH<=(0.33*t-c)Then

scoreN="0.33t-C"

ElseIfH<=(0.4*t-c)Then

scoreN="0.40t-C"

Else

scoreN="超标"

EndIf

CaseIs="0.25

IfH<=(0.25*t-c)Then

scoreN="0.25t-C"

ElseIfH<=(0.33*t-c)Then

scoreN="0.33t-C"

Else

scoreN="超标"

EndIf

CaseElse

IfH<=(0.2*t-c)Then

scoreN="0.20t-C"

ElseIfH<=(0.25*t-c)Then

scoreN="0.25t-C"

Else

scoreN="超标"

EndIf

EndSelect

EndIf

'***********************************

'0.3PL0

Ifp="0.3PL0

Ifb="B/(ΠD)≤0.25"Then

IfH<=(0.2*t-c)Then

scoreN="0.20t-C"

ElseIfH<=(0.25*t-c)Then

scoreN="0.25t-C"

Else

scoreN="超标"

EndIf

ElseIfb="0.25

IfH<=(0.15*t-c)Then

scoreN="0.15t-C"

ElseIfH<=(0.2*t-c)Then

scoreN="0.20t-C"

Else

scoreN="超标"

EndIf

EndIf

EndIf

EndIf

EndFunction

结束语

通过ExcelVBA很好的实现了,压力容器、压力管道定期检验中的自动计算,减轻了我公司检验员的工作量,提高了效率。

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2