利用API实现字符串表达式的计算,推荐★★★★★
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 = "1+2*3-4/5"
End Sub
调用系统计算器进行加法运算的函数Sum
Private Sub Command1_Click()
Dim x
x = Sum(Text1.Text)
Debug.Print x
End Sub
Public Function Sum(ByVal Expression As String) As Integer
Expression = Replace(Expression, "+", "{+}") & "=" '+必须放在{}中
Shell "calc.exe", vbHide '调用系统计算器
SendKeys Expression
SendKeys "^c" '复制结果值到剪贴板
SendKeys "%{F4}" '关闭计算器
Sum = Val(Clipboard.GetText) '从剪贴板复制结果值
End Function
Private Sub Form_Load()
Text1.Text = "2+3+6"
End Sub
使用REPLACE这个函数得到的返回值是STRING型的,你需要将它转换为数值型,才可以用来计算:
Dim A as long
Dim B as string
B = "12"
A = Val(B)
使用VAL函数可以将一个文本型的数字转化为数值型。
CINT是用来将将数字从一种数据类型转化为整型数据