Function MyCal(MyStr$) As Double
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
Dic = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789%+-*/^()"
For i = 1 To Len(Dic)
d(Mid(Dic, i, 1)) = Mid(Dic, i, 1)
Next
For i = Len(MyStr) To 1 Step -1
MyStr = Replace(MyStr, Mid(MyStr, i, 1), d(Mid(MyStr, i, 1)))
Next
MyCal = Evaluate(MyStr)
End Function作者: Hsieh 時間: 2012-9-7 15:21
謝謝你提供,在看你的公式時,也讓我想到另一種簡單寫法(列舉法)
Function MyCal(MyStr$) As Double
Dim Dic As String, xStr As String
Dic = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789%+-*/^()"
For i = 1 To Len(MyStr)
If InStrB(1, Dic, Mid(MyStr, i, 1), 1) <> 0 Then
xStr = xStr & Mid(MyStr, i, 1)
End If
Next i
MyCal = Evaluate(xStr)
End Function作者: c_c_lai 時間: 2012-9-8 17:20