Option ExplicitPrivate Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPublic Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0 End Function Private Sub Command1_Click() ExecuteLine "Dim pp As Long" ExecuteLine "Dim ss As long" ExecuteLine "pp=95" ExecuteLine "ss = pp+5" ExecuteLine "debug.print ss" End Sub
喔,你那个ss为String,那么第二个ExcuteLine句为: ExecuteLine "Dim ss As String"
这是找到的答案 Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0 End Function Function ReturnCalc(ByVal x As String)As String Dim Result ExecuteLine "dim x as double" ExecuteLine "x= " & x ExecuteLine "clipboard.settext x" Result = Clipboard.GetText ReturnCalc = Cstr(Result) Set result = Nothing End Function
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Private Sub Command1_Click()
ExecuteLine "Dim pp As Long"
ExecuteLine "Dim ss As long"
ExecuteLine "pp=95"
ExecuteLine "ss = pp+5"
ExecuteLine "debug.print ss"
End Sub
ExecuteLine "Dim ss As String"
ss=pp+5 去了。
应该是ss="pp+5"才是啊。 ss的字串值本是个表达式,而我想得到这个表达式的值。
'可以这样赋值
ss = 1
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Function ReturnCalc(ByVal x As String)As String
Dim Result
ExecuteLine "dim x as double"
ExecuteLine "x= " & x
ExecuteLine "clipboard.settext x"
Result = Clipboard.GetText
ReturnCalc = Cstr(Result)
Set result = Nothing
End Function