Excel 我可以使用For循环定义和填充变量吗?

Excel 我可以使用For循环定义和填充变量吗?,excel,vba,Excel,Vba,我如何使用For循环填充一系列使用公共前缀后跟数字的变量,以便在不单独写入它们的情况下不会出现错误 我以前见过这样做,但我找不到可以复制的例子。这是一个类似于这样的东西 For i = 0 to 9 var("Home" & i) = "Yes" Next i TIA任何时候,只要你想到“变量名”,就要想到“数组” 也许你要找的是一本字典: dict.Add Key:="Orange", Item:=45 如果要设置“orange”的值,可以如下使用: dict("Orang

我如何使用For循环填充一系列使用公共前缀后跟数字的变量,以便在不单独写入它们的情况下不会出现错误

我以前见过这样做,但我找不到可以复制的例子。这是一个类似于这样的东西

For i = 0 to 9
    var("Home" & i) = "Yes"
Next i
TIA

任何时候,只要你想到“变量名”,就要想到“数组”


也许你要找的是一本字典:

dict.Add Key:="Orange", Item:=45
如果要设置“orange”的值,可以如下使用:

dict("Orange") = 75

看一看

这是可能的,但前提是您的变量是公共的且在类中:

' Class1

Public Home0 As String
Public Home1 As String
Public Home2 As String
Public Home3 As String
Public Home4 As String
Public Home5 As String
Public Home6 As String
Public Home7 As String
Public Home8 As String
Public Home9 As String
然后您可以这样使用:

' Module1

Dim C1 As New Class1

Sub Foo_In_Module1()
    Debug.Print "Before: Home0 = " & C1.Home0
    For i = 0 To 9
        CallByName C1, "Home" & i, VbLet, "Yes"
    Next i
    Debug.Print "After: Home0 = " & C1.Home0
End Sub
我的即时窗口中的输出:

使用CallByName()检索这些相同值的示例:


不,这是不可能的。在这种情况下使用数组。
' Module1

Dim C1 As New Class1

Sub Foo_In_Module1()
    Debug.Print "Before: Home0 = " & C1.Home0
    For i = 0 To 9
        CallByName C1, "Home" & i, VbLet, "Yes"
    Next i
    Debug.Print "After: Home0 = " & C1.Home0
End Sub
Sub Foo2_In_Module1()
    Dim varName As String
    For i = 0 To 9
        varName = "Home" & i
        Debug.Print varName & " = " & CallByName(C1, varName, VbGet)
    Next i
End Sub