Function CalcStringExpression(ByVal szIn As String) As Single
On Error GoTo Z
Form1.txtExecuteLine.Text = "0"
ExecuteLine "s=" & szIn & ": Form1.txtExecuteLine.Text =s"
CalcStringExpression = Val(Form1.txtExecuteLine.Text)
Exit Function
Z:
CalcStringExpression = 0
End Function
Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
ByVal pStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As Long
Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
On Error Resume Next
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Function CalcStringExpression(ByVal szIn As String) As Long
On Error GoTo Z
Form1.txtExecuteLine.Text = "0"
ExecuteLine "s=" & szIn & ": Form1.txtExecuteLine.Text =s"
CalcStringExpression = Val(Form1.txtExecuteLine.Text)
Exit Function
Z:
CalcStringExpression = 0
End Function
'开始计算:
Private Sub Command1_Click()
MsgBox CalcStringExpression("(12+34)*15+23*3/16")
End Sub
Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Sub calc(ByVal x As String)
Dim result
ExecuteLine "dim x as double"
ExecuteLine "x= " & x
ExecuteLine "clipboard.settext x"
result = Clipboard.GetText
MsgBox x & "=" & result
Set result = Nothing
End Sub
Private Sub Command1_Click()
calc Text1
End Sub
Private Sub Form_Load()
Text1.Text = "(12 + 34) * 15 + 23 * 3 / 16"
End Sub
'方法一:
'引用Microsoft Script Control 1.0
Private Sub Command1_Click()
Dim MSSC As New ScriptControl
MSSC.Language = "VBScript"
MsgBox "计算表达式的结果是: " & MSSC.Eval("(12+34)*15+23*3/16")
Set MSSC = Nothing
End Sub