使用VBA中变量的文本*名称*获取变量的值

使用VBA中变量的文本*名称*获取变量的值,vba,Vba,我试图循环遍历一个名为a1、a2等变量的列表。。。并动态构造变量的名称,如下所示: a1 = 7 For RowNum = 1 to 10 MyVar = "a" & RowNum 'use MyVar in calculation MsgBox MyVar Next RowNum 问题是我需要MyVar的值,而我得到的只是名称。这里,在循环的第一次迭代中,MsgBox显示“a1”,我需要7。我尝试了许多使用.Value的排列,但只得到编译或运行时错误 如何从文

我试图循环遍历一个名为a1、a2等变量的列表。。。并动态构造变量的名称,如下所示:

a1 = 7
For RowNum = 1 to 10
    MyVar = "a" & RowNum
    'use MyVar in calculation
    MsgBox MyVar
Next RowNum
问题是我需要MyVar的值,而我得到的只是名称。这里,在循环的第一次迭代中,MsgBox显示“a1”,我需要7。我尝试了许多使用.Value的排列,但只得到编译或运行时错误

如何从文本中的变量名称获取变量的值?这可以在VBA中完成吗


提前谢谢。

您可能应该使用字典:

Sub Test()
    Dim myVars As Object
    Dim myVar As Variant
    Dim RowNum As Long

    Set myVars = CreateObject("Scripting.Dictionary")
    myVars("a1") = 7
    myVars("a5") = "xyz"
    myVars("hello") = 42

    For RowNum = 1 To 10
        myVar = myVars("a" & RowNum)
        'use MyVar in calculation
        MsgBox "a" & RowNum & " contains " & myVar
        If RowNum = 1 Then
            MsgBox Range("D" & myVars("a" & RowNum)).Address
        End If
    Next RowNum

End Sub

这就是阵列的用途。或者脚本字典。VBA语言中没有“评估”代码的机制,你可以在(比如)javascript中找到,你是在用PHP之类的语言思考。要使其工作,您需要反射,这不是VBA的语言特性。使用数组。您实际上是想要名为
a1
的变量的值,还是刚好在Excel单元格
a1
的值之后(即,您想要
范围(“a”&RowNum)。值
)?1和2。我尝试了一个变量名数组,该数组被标注为字符串。同样的问题-ArrayName(1)给了我“a1”,而不是变量a1的值。3.我需要范围(“A”&a1).值或范围(“A”&ArrayName(RowNum)).值。这两个都不管用。我走了另一条路,让它发挥作用。我使用了一个整数数组,并将数组中的元素设置为a(n)变量的值。然后使用Range(“A”&ArrayName(RowNum)).Value获得正确答案。谢谢大家的建议。