dragon_lzw 2016-09-24 18:37 采纳率: 0%
浏览 957
已结题

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

小弟一个程序中需要实现动态代码,即在程序运行过程中生成代码,写成字符串,再用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条回答 默认 最新

  • threenewbee 2016-09-25 16: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
    
    评论
    1人已打赏

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?