我有一个用来指定变量的字符串
我已经使用eval()来检查字符串中指定的变量的值,例如
'these variables change
Dim String1, String2, String3, String4, String5 as String
String2 = "Form1"
String3 = "Listbox1"
String4 = "Listbox2"
'this routine stays the same
Dim String1 as String
String1 = "forms!" & string2 & "." & string3 & ".selected(1)"
if eval(String1) = True then 'do this...
这很好用-我可以更改变量,然后运行其下的子程序
但是我想更改字符串中指定的变量的值,例如:
String5 = "forms!" & string2 & "." & string4 & ".selected(1)"
我想将其设置为true-但我无法弄清楚例如:
String5.value = True
Set String5 = True
我希望有一个紧凑的子代码,可以在不同的地方使用它来执行相同的任务,但要使用可变变量。
谢谢
答案 0 :(得分:0)
变量?我想您正在考虑PHP。
在VBA中有更好的方法可以做到这一点。这段代码:
String1 = "forms!" & string2 & "." & string3 & ".Selected(1)"
If Eval(String1) = True Then ...
更容易写为:
If Forms(string2).Controls(string3).Selected(1) = True Then ...
此标准表格更易于理解和修改。
关于此代码:
String5.value = True
Set String5 = True
我认为您想做的是:
Forms(string2).Controls(string3).Selected(1) = True
此处不能使用Eval
,因为Eval
只能返回字符串或数字,而不能返回对象引用。
希望这会有所帮助。
PS-
VBA中的字符串不是其他语言中的对象。代替String5.value = True
,使用:
String5 = True ' changed to "True"
在这一行代码中:
Dim String1, String2, String3, String4, String5 as String
您要声明四个变体和一个字符串。这是VBA的怪癖。如果需要所有字符串,请尝试:
Dim String1 As String, String2 As String, String3 As String, String4 As String, String5 As String