界面上有个text10控件,里面有个公式是 A-B
以下代码实现的是,利用VBScript语言 eval函数识别文本框中的 公式“A-B”,可是结果一直不正确。
我将Label10 = s.Eval(Text10.Text) 改为Label10 = s.Eval(A-B) 结果是对的。
根据判断,执行过程中,Text10.Text=“A-B”,就是多了双引号,导致结果为0,不正常。所以,请大神们帮我解决以下。如何写这部分。 Private Sub Command13_Click()
Dim A As Long
Dim B As Long
A = 2
B = 444
Dim s
If Text10 = "" Then Exit Sub
On Error GoTo errHandlerSet s = CreateObject("ScriptControl")
s.Language = "VBScript"
Label10 = s.Eval(Text10.Text) 问题在这里,如果写A-B 运行正常,如果写成Text10.Text,不正常,文本框内容还是A-B但是,在这里,变成了“A-B”,这个双引号如果去不掉,没有办法做计算。Set s = Nothing
flag = True
Exit Sub
errHandler:
Text10 = Err.Description
End Sub
Dim A As Long
Dim B As Long
Dim s
Dim tmp As StringA = 2
B = 444
If Text10 = "" Then Exit Sub
On Error GoTo errHandlerSet s = CreateObject("ScriptControl")
s.Language = "VBScript"tmp = Replace(Text10.Text, " ", "")
If tmp = "A-B" Then Label10 = s.Eval(A - B)
Set s = Nothing
flag = True
Exit Sub
errHandler:
Text10 = Err.Description
End Sub
Dim A As Long
Dim B As Long
Dim sA = 2
B = 444
If Text10 = "" Then Exit Sub
On Error GoTo errHandlerSet s = CreateObject("ScriptControl")
s.Language = "VBScript"Text10.Text = Replace(Text10, "A", A)
Text10.Text = Replace(Text10, "B", B)
Label10 = s.Eval(Text10.Text)Set s = Nothing
flag = True
Exit Sub
errHandler:
Text10 = Err.Description
End SubVB 并不知道你 Text10 中的字符 "A" 是引用变量 A,,字符 "B" 是引用变量 B。因此使用缺省值 0。
'-- 定义在这里是不能被Eval调用的 --
'Dim A As Long
'Dim B As Long
'A = 2
'B = 444
Dim s
If Text10 = "" Then Exit Sub
On Error GoTo errHandler
Set s = CreateObject("ScriptControl")
s.Language = "VBScript"
'-- 添加变量(可以省略 Dim 语句) --
s.AddCode "A = 2"
s.AddCode "B = 444"
Label10 = s.Eval(Text10.Text)
Set s = Nothing
flag = True
Exit Sub
errHandler:
Text10 = Err.Description
End Sub
2楼的是将两者做了对接的,3楼是将AB变量赋值的代码都移到脚本里执行的。