想要按名称和字符串值访问变量

时间:2018-09-19 13:27:26

标签: vba

我想通过使用两个不同的字符串构造变量的名称来获取变量的值。

将其分解到最低限度:

TA = 1
TB = 2
TC = 3
B = 2

Messagebox.Show(B*("T"+"B"))

我知道这是最小的,并且我不想在复杂的代码中使用它。我也知道有这样做的方法,但是我在功能最少的环境中工作。

那么有基本的方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:7)

您不能像这样动态地引用变量。这是违法的。通常,当人们开始以这种方式思考时,答案是“使用数组”。相反,按照您的示例,最好使用字典:

使用字典的示例:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "TA", 1
dict.Add "TB", 2
dict.Add "TC", 3
b=2

MessageBox.Show(B*(dict("T" & "B")))

"T" & "B"被串联在一起成为"TB",然后在您的字典value的{​​{1}} key处获取"TB" dict并进行数学运算。

2非常好学,因为它功能强大。您可以将任何内容存储在字典中(包括其他字典),而不仅仅是数字和字符串值。

最后,此示例对字典对象使用了后期绑定,这很不错,但是在编写代码时没有代码提示,并且从头开始学习而没有代码提示是很浪费的。

请转至“工具” >>“参考”,然后选中列表中的“ Microsoft脚本运行时”框。然后,您可以像使用原生字典一样使用字典:

Dictionary

对于具有数组的解决方案。通常人们会问类似的东西:

“为什么不起作用?”

Dim dict As Dictionary
Set dict = New Dictionary

dict.Add "TA", 1
....

与这里的问题非常相似。可以使用数组代替“动态变量”:

Dim var1, var2, var3, var4
var1="hi "
var2="there "
var3="what's "
var4="up."

For i=1 to 4
    output=output & (var & i)
Next

MsgBox(output)