Private Sub Command1_Click()
Dim t As String, cs(10) As String, b() As String, c() As String, jg As Single
' 尋對這類計算式進行計算得到結果16.08:1m*2m+3m*2m[2軸右]+[3軸左]5.2㎡+梁1.2m*2.4m
t = "1m*2m+3m*2m[2軸右]+[3軸左]5.2㎡+梁1.2m*2.4m"
cs(10) = t
cs(0) = "0123456789.+-*/"
cs(1) = 0
cs(3) = ""
'去除中括號裏的內容
For j = 1 To Len(t)
cs(2) = Mid(t, j, 1)
If cs(2) = "[" Then
cs(1) = 1
ElseIf cs(2) = "]" Then
cs(1) = 0
End If
If cs(1) = 0 Then
cs(3) = cs(3) & cs(2)
End If
Next
t = Replace(cs(3), "]", "")
' Debug.Print t
'去中文及單位等多余字符
cs(4) = ""
For j = 1 To Len(t)
cs(2) = Mid(t, j, 1)
If InStr(cs(0), cs(2)) > 0 Then
cs(4) = cs(4) & cs(2)
End If
Next
t = cs(4)
Debug.Print t
'拆分數字和運算符
cs(5) = Replace(t, "+", ",")
cs(5) = Replace(cs(5), "-", ",")
cs(5) = Replace(cs(5), "*", ",")
cs(5) = Replace(cs(5), "/", ",")
b() = Split(cs(5), ",") '拆分出的數字保存在數組b()中
cs(6) = ""
For j = 1 To Len(t)
cs(2) = Mid(t, j, 1)
If InStr("+-*/", cs(2)) > 0 Then
cs(6) = cs(6) & cs(2) & ","
End If
Next
cs(6) = cs(6) & "+,"
c() = Split(cs(6), ",") '拆分出的運算符保存在數組c()中
'根據運算符,進行公式的計算
jg = 0
For j = 0 To UBound(c()) - 1
If c(j) = "+" And c(j + 1) = "+" Then
jg = jg + Val(b(j)) + Val(b(j + 1))
End If
If c(j) = "+" And c(j + 1) = "*" Then
jg = jg + Val(b(j + 1)) * Val(b(j + 2))
End If
'如果有減或者除法,可以再加判斷處理
Next
Debug.Print cs(10) & "最終結果為:=" & jg
End Sub