Eval函数 字符串变量问题

[复制链接]
查看11 | 回复4 | 2021-1-27 06:05:16 | 显示全部楼层 |阅读模式
界面上有个text10控件,里面有个公式是A-B
以下代码实现的是,利用VBScript语言eval函数识别文本框中的公式“A-B”,可是结果一直不正确。
我将Label10=s.Eval(Text10.Text)改为Label10=s.Eval(A-B)结果是对的。
根据判断,执行过程中,Text10.Text=“A-B”,就是多了双引号,导致结果为0,不正常。所以,请大神们帮我解决以下。如何写这部分。
PrivateSubCommand13_Click()
DimAAsLong
DimBAsLong
A=2
B=444
Dims
IfText10=""ThenExitSub
OnErrorGoToerrHandler
Sets=CreateObject("ScriptControl")
s.Language="VBScript"
Label10=s.Eval(Text10.Text)问题在这里,如果写A-B运行正常,如果写成Text10.Text,不正常,文本框内容还是A-B但是,在这里,变成了“A-B”,这个双引号如果去不掉,没有办法做计算。
Sets=Nothing
flag=True
ExitSub
errHandler:
Text10=Err.Description
EndSub
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
PrivateSubCommand13_Click()
DimAAsLong
DimBAsLong
Dims
DimtmpAsString
A=2
B=444
IfText10=""ThenExitSub
OnErrorGoToerrHandler
Sets=CreateObject("ScriptControl")
s.Language="VBScript"
tmp=Replace(Text10.Text,"","")
Iftmp="A-B"ThenLabel10=s.Eval(A-B)
Sets=Nothing
flag=True
ExitSub
errHandler:
Text10=Err.Description
EndSub

回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
PrivateSubCommand13_Click()
DimAAsLong
DimBAsLong
Dims
A=2
B=444
IfText10=""ThenExitSub
OnErrorGoToerrHandler
Sets=CreateObject("ScriptControl")
s.Language="VBScript"
Text10.Text=Replace(Text10,"A",A)
Text10.Text=Replace(Text10,"B",B)
Label10=s.Eval(Text10.Text)
Sets=Nothing
flag=True
ExitSub
errHandler:
Text10=Err.Description
EndSubVB并不知道你Text10中的字符"A"是引用变量A,,字符"B"是引用变量B。因此使用缺省值0。
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
PrivateSubCommand13_Click()
'--定义在这里是不能被Eval调用的--
'DimAAsLong
'DimBAsLong
'A=2
'B=444
Dims
IfText10=""ThenExitSub
OnErrorGoToerrHandler
Sets=CreateObject("ScriptControl")
s.Language="VBScript"
'--添加变量(可以省略Dim语句)--
s.AddCode"A=2"
s.AddCode"B=444"
Label10=s.Eval(Text10.Text)
Sets=Nothing
flag=True
ExitSub
errHandler:
Text10=Err.Description
EndSub
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
你那个s.Eval(A-B)相当于s.Eval(2-444)当然有效果了。因为在vb中这样写A-B是交给vb去处理的。而你写s.Eval("A-B")是交给VBScript脚本宿主处理的了。
所以变量赋值要么都放到脚本里面,若果放到vb里面那么就要做好对接。就看你的目的是什么了。
2楼的是将两者做了对接的,3楼是将AB变量赋值的代码都移到脚本里执行的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行