如何为字符串中定义的变量赋值?

时间:2019-01-10 23:21:54

标签: string variables access-vba

我有一个用来指定变量的字符串

我已经使用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

我希望有一个紧凑的子代码,可以在不同的地方使用它来执行相同的任务,但要使用可变变量。

谢谢

1 个答案:

答案 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