【发布时间】:2014-10-06 13:43:02
【问题描述】:
我有代码可以使用 Eval 和 Execute 基于字符串构建变量。 但无论出于何种原因,当我尝试将其设置为变量时,Execute 将变量留空。但如果我手动将其设置为字符串,则效果很好
这不起作用,给出一个空框:
For j = 0 To 2
name = "alias_" & j
val = "test"
Execute(Eval("name") + "=" + val)
msgbox(Execute(Eval("name"))
Next
这确实有效,在 msgbox 中显示“测试”:
For j = 0 To 2
name = "alias_" & j
Execute(Eval("name") + "=" + "test")
msgbox(Execute(Eval("name"))
Next
所以 Execute 似乎不喜欢这里的变量。更奇怪的是,在我的 VBSEdit 调试器中,我可以看到局部变量,它会创建一个名为“test”的局部变量,而不是将值设置为 alias_j 变量。现在完全让我感到困惑。
【问题讨论】:
-
不要这样构造变量。曾经。如果您需要索引变量:使用数组。这就是他们发明的目的。
-
实际上我会使用字典.. 并且将使用字典.. 有另一个带有字典的 vb 主义,所以我尝试使用数组更有创意,但不想要迭代数组。但是我的字典现在可以正常工作了,所以它已经失效了。仍然很好的信息...人们太害怕 2 个最强大的功能。
-
你混淆了“害怕”和“谨慎”。