Это возможно, но только если ваши переменные являются ОБЩЕСТВЕННЫМИ и в КЛАССЕ:
' 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
Тогда вы можете использовать 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
Вывод в моём непосредственном окне:
![enter image description here](https://i.stack.imgur.com/8DY5T.png)
Пример получения тех же значений с помощью CallByName ():
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