您的当前位置:首页正文

测量数据处理与VB应用

2021-09-05 来源:汇意旅游网
测量数据处理与VB应用

摘要:利用编写的VB程序对测量数据进行处理,可以使测量数据处理简单化,随着一些编程软件在移动设备中的应用,使测量变的很便捷,所以学习一些关于编程方面的知识,可以在以后的工作中更得心应手。 关键词:VB语言;测量数据;数据处理

VB(Visual Basic的简称,可视化的编程语言)是微软公司的一种通用程序设计语言,包含在Microsoft Excel、Microsoft Acces、AutoCAD等众多Windows应用软件中的VBA都是使用VB语言,以供用户二次开发,本文主要讲述Microsoft Excel VBA在测量数据处理方面的应用;首先通过一个简单的实例来了解一下VB的应用和代码编写规则。

下面以创建一个 Hello VB的程序为例进行介绍。程序执行流程为:运行程序,单击“确定”按钮,在窗体的标签中显示Hello VB;单击“退出”按钮,退出程序。 打开Visual Basic 6.0,选择“文件”/“新建工程”命令,弹出“新建工程”对话框。选择“标准 EXE”,单击“确定”按钮,如图1-1所示,即可创建一个标准的EXE工程。

图1-1

在创建工程后,系统会自动建立一个新窗体,并将其命名为Forml。在该窗体上添加一个Label控件、两个CommandButton控件,如图1-2所示。 双击“确定”和“退出”按钮进入代码编辑区,分别编写如下代码: Private Sub Command1_Click() Label1.Caption = \"Hello VB\" End Sub

Private Sub Command2_Click() End End Sub

Private Sub Form_Load()

Me.Caption = \"第一个VB应用程序\" Label1.Font = \"宋体\" Label1.FontSize = 32 Label1.FontBold = True

Command1.Caption = \"确定\" Command2.Caption = \"退出\" ' End Sub

完成程序编写后,需要对程序进行调试和运行;当程序没有错误时,就可以成功运行了。单击“确定”按钮,在标签中即可显示出Hello VB的字样,运行效果如下图所示,单击“退出”按钮可以退出程序。

单击“编辑”按钮,打开代码编写器,编写如以下代码: Sub hdm()

Dim e(0 To 999),i,f(1 To 999),g,a,b,c,d,m a = Sheets(\"sheet1\").Cells(2,1).Value b = Sheets(\"sheet1\").Cells(2,2).Value

c = Sheets(\"sheet1\").Cells(2,3).Value i = 0 g = 1

e(0)= Int(Sheets(\"sheet2\").Cells(1,3).Value + 0.5) f(1)= 1

For i = 1 To 999

e(i)= Int(Sheets(\"sheet2\").Cells(i,3).Value + 0.5)

If Abs(e(i)- e(i - 1))>= 1 Or(e(i)= 0 And e(i - 1)<> 0)Then f(g + 1)= i g = g + 1 End If Next i m = g - 1

For g = 1 To m

Rows(f(g)+(g - 1)* 2).Resize(2).Insert

d = Int(Sheets(\"sheet2\").Cells(f(g)+(g - 1)* 2 + 2,3).Value + 0.5) Sheets(\"sheet2\").Cells(f(g)+(g - 1)* 2,1)= \"begin\" Sheets(\"sheet2\").Cells(f(g)+(g - 1)* 2,2)= d Sheets(\"sheet2\").Cells(f(g)+(g - 1)* 2 + 1,1)= 0

Sheets(\"sheet2\").Cells(f(g)+(g - 1)* 2 + 1,2)=(d - a)* c + b Next g

Sheets(\"sheet2\").Columns(3)= \"\"

Sheets(\"sheet2\").Columns(2).NumberFormatLocal = \"0.000_ \" End Sub 程序说明:

所测断面桩号和应测桩号之差大于50cm将出现错误,在sheet1表格中输入起坡点高程、起坡桩号和坡比,如图2-3所示:

图3-2

在代码编写区中输入以下代码:

Private Sub CommandButton1_Click() a = Cells(3,1).Value b = Cells(3,2).Value c = Cells(3,3).Value d = Cells(3,4).Value e = Cells(3,5).Value f = Cells(3,6).Value h = Cells(3,7).Value For i = 5 To 999

If Cells(i,1).Value <> \"\" Then g = b +(Cells(i,1).Value - a)* c If Cells(i,3).Value > g + h Then

Cells(i,4).Value = Sqr((Cells(i,3).Value -(g + e - f))^ 2 +(Cells(i,2).Value)^ 2)- f Else

Cells(i,4).Value = Abs(Cells(i,2))- d End If Else

Cells(i,4).Value = \"\" End If Next i

End Sub

Private Sub CommandButton2_Click() For i = 5 To 999

Cells(i,4).Value = \"\" Next i End Sub 程序说明:

按要求输入起始桩号、高程、坡比和洞型数据,然后直接把数据粘贴到相应表格中点击“计算”按钮,就可以得到超欠挖结果。

在导流洞和边坡开挖过程中经常会遇到一些在圆弧段上的数据,需要计算桩号、偏距,通过坡比和高程来计算超欠挖情况;用计算器只能逐一进行计算,对大量的数据进行处理很不方便,所以用Microsoft Excel VBA编写一个可以在圆弧段上批量转换坐标的应用程序,其方法如上;添加和布置如图4-1所以的按钮和数据:

图4-1

在代码编写区中输入以下代码:

Private Sub CommandButton1_Click() Const Pi As Single = 3.1415926536 If OptionButton1.Value = True Then GoTo lb1 Else

GoTo lb2 End If lb1:

a = Cells(3,1).Value:b = Cells(3,2).Value:c = Cells(3,3).Value:d = Cells(3,4).Value:e = Cells(3,5).Value:k = Cells(3,7).Value

h = Int(e)+ Int((e - Int(e))* 100)/ 60 +(e * 100 - Int(e * 100))/ 36 For i = 5 To 999

If Cells(i,1).Value <> \"\" And Cells(i,2).Value <> \"\" Then x = Cells(i,1).Value - b:y = Cells(i,2).Value - c If y <> 0 Then

f =(Pi *(1 - Sgn(y)/ 2)- Atn(x / y))* 180 / Pi Else f = 180 End If

If k *(f - h)< 0 Then g = k *(f - h)+ 360 Else

g = k *(f - h) End If

Cells(i,6).Value = a + 3.1415926536 * g * Cells(3,8).Value / 180 If Cells(i,6).Value > d Then

MsgBox \"第\" & i & \"行超出计算范围\",vbOKOnly,\"提示\"

Cells(i,1).Interior.Color = vbRed:Cells(i,2).Interior.Color = vbRed:Cells(i,7).Value = \"\" Else

Cells(i,7).Value = k *(Cells(3,8).Value - Sqr(x ^ 2 + y ^ 2)) End If Else

Cells(i,6).Value = \"\":Cells(i,7).Value = \"\" End If Next i

End lb2:

a = Cells(3,1).Value:b = Cells(3,2).Value:c = Cells(3,3).Value:d = Cells(3,4).Value:e = Cells(3,5).Value:k = Cells(3,7).Value

h = Int(e)+ Int((e - Int(e))* 100)/ 60 +(e * 100 - Int(e * 100))/ 36 For j = 5 To 999

If Cells(j,6).Value <> \"\" And Cells(j,7).Value <> \"\" Then

If h + k *((Cells(j,6).Value - a)* 180 /(Cells(3,8).Value * 3.1415926536))< 0 Then

s = h + k *((Cells(j,6).Value - a)* 180 /(Cells(3,8).Value * 3.1415926536))+ 360

Else

s = h + k *((Cells(j,6).Value - a)* 180 /(Cells(3,8).Value * 3.1415926536)) End If

z = Cells(3,8).Value - k * Cells(j,7).Value

Cells(j,1).Value = b + z * Cos(s * Pi / 180):Cells(j,2).Value = c + z * Sin(s * Pi / 180) Else

If Cells(j,6)> d Then

Cells(j,1).Value = \"\":Cells(j,2).Value = \"\":Cells(j,6).Interior.Color = vbRed:Cells(j,7).Interior.Color = vbRed

MsgBox \"第\" & j & \"行超出计算范围\",vbOKOnly,\"提示\" End If End If Next j End End Sub

Private Sub CommandButton2_Click() For i = 1 To 999 For j = 1 To 8

If Cells(i,j).Interior.ColorIndex = 3 Then Cells(i,j).Interior.ColorIndex = 0 End If Next j Next i End Sub 程序说明:

按提示在单元格输入相应的数据(注意转角向左转为-1,转角向右转为1),本程序可以在圆弧段上正桩号、偏距,也可以反算X、Y;当计算桩号超出YZ点的桩号程序将终止,并提示“超出计算范围”,该坐标处单元格底色自动变红。

利用编写的VB程序对测量数据进行处理,可以使测量数据处理简单化,随着一些编程软件在手机等一些移动设备中的应用,使测量变的很便捷,所以学习一些关于编程方面的知识,可以在以后的工作中更得心应手。 参考文献

[1]《Visual Basic 从入门到精通》第3版

因篇幅问题不能全部显示,请点此查看更多更全内容