2 dragon lzw dragon_lzw 于 2016.09.25 02:37 提问

VB执行动态代码时变量的作用域问题 5C

小弟一个程序中需要实现动态代码,即在程序运行过程中生成代码,写成字符串,再用ExecuteStatement来执行字符串中的代码,如下所示,测试后发现可以运行,但是里面的变量的值不对,估计是作用域出了问题,如下,在ExecuteStatement “a=5”之后,外面更改了a=3,再运行ExecuteStatement "msgbox a"时a依旧是5,需求是在ExecuteStatement中更改了变量的值,在外面也跟着更改,而在外面更改了变量的值之后也一样,不知道该如何处理,非常感谢!

Private Sub Command1_Click()
Dim a As Integer
Dim ob As Object
Set ob = CreateObject("scriptcontrol")
ob.Language = "VBscript"
ob.ExecuteStatement "a = 5"
a = 3
ob.ExecuteStatement "msgbox a"

1个回答

caozhy
caozhy   Ds   Rxr 2016.09.26 00:16
 http://www.cnblogs.com/rosesmall/archive/2012/11/15/2771585.html

计算带变量的表达式
    Private Sub Command1_Click()
      '执行一条 scripting 语句例子
       x = 10
       ScriptControl1.ExecuteStatement "x=" & x '执行一条 scripting 语句,将值 10 赋给变量 x
       S = ScriptControl1.Eval("(x-1)^2")
       MsgBox S
dragon_lzw
dragon_lzw 感谢回复,但这种方法还是没法解决我的问题,我目前遇到的问题是有很多个变量,a,b,c,d,x,y,z......我要给变量赋值,但事先不知道哪个变量赋什么值,如你举的例子中事先并不知道是x=10,需要在程序运行过程中动态判断,我又不想写很多if...来判断,因为有上百个变量,所以想到是否可以通过动态代码来实现,即程序运行过程中判断哪个变量赋什么值后生成动态代码来执行,但就遇到执行动态代码后变量的值并没有赋给外层的程序,而只是在内层的作用域里,这就没意义了,不知道是否有其他方法或者思路可以解决这个问题的,多谢!
大约一年之前 回复
dragon_lzw
dragon_lzw 感谢回复,但这种方法还是没法解决我的问题,我目前遇到的问题是有很多个变量,a
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片