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 LongPublic Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0 End FunctionPrivate Sub Command1_Click() ExecuteLine "Dim X As Long, Y As Long" ExecuteLine "x = 2" ExecuteLine "y = 3" ExecuteLine "msgbox " & Text1.Text End SubPrivate Sub Form_Load() Text1.Text = "x+y" End Sub
可以列举所有情况,如: if a=a="("+str1+++str2+")"+*+str3 then b=(val(str1)+val(str2))* val(str3) if a=a="("+str1+-+str2+")"+*+str3 then b=(val(str1)-val(str2))* val(str3)
我这是个循环列出几个数通过+-*/()组成的各种算式的值 用列举不现实,因为算式太多了~另外:shwen兄弟,script control 中AddCode能不能加入符号啊
Private 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 FunctionPrivate Sub Command1_Click()
ExecuteLine "Dim X As Long, Y As Long"
ExecuteLine "x = 2"
ExecuteLine "y = 3"
ExecuteLine "msgbox " & Text1.Text
End SubPrivate Sub Form_Load()
Text1.Text = "x+y"
End Sub
例如
Me.ScriptControl1.AddCode "sp1=3"
Me.ScriptControl1.AddCode "sp2=1"
Me.ScriptControl1.AddCode "sp3=4"
MsgBox Me.ScriptControl1.Eval("(sp1-sp2)*sp3")
shwen兄弟的法子看起来行,但跟俺的不太适用啊~
俺那个是这样的
op1="+"
op2="*"
str1=1
str2=2
str3=3
我希望a的值=str1+str2的和*str3
所以
a="("+str1+op1+str2+")"+op2+str3这个,怎么计算得出a的值
然后
ExecuteLine "msgbox " & Text1.Text
就有结果了就是这个意思
缺点是没有返回值,你的要求还是达到了的
[email protected]
msgbox a
a="("+str1+op1+str2+")"+op2+str3但这个字符串变量里面的字符串实际上是个算式,有什么法子能让a执行吗?
if a=a="("+str1+++str2+")"+*+str3 then b=(val(str1)+val(str2))* val(str3)
if a=a="("+str1+-+str2+")"+*+str3 then b=(val(str1)-val(str2))* val(str3)
用列举不现实,因为算式太多了~另外:shwen兄弟,script control 中AddCode能不能加入符号啊