Могу ли я определить и заполнить переменные, используя цикл For? - PullRequest
0 голосов
/ 01 июля 2019

Как мне заполнить ряд переменных, которые используют общий префикс, за которым следует число, используя цикл For, чтобы у меня не было возможности писать их по отдельности?

Я уже видел это, но не могу найти этот пример для репликации. Это было что-то вроде этого ...

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

ТИА

Ответы [ 3 ]

3 голосов
/ 01 июля 2019

Каждый раз, когда вы думаете, «имена переменных» вместо «Array».

Dim HomeArray(0 to 9) As String

For i = 0 to 9
    HomeArray(i) = "Yes"
Next i
1 голос
/ 01 июля 2019

Это возможно, но только если ваши переменные являются ОБЩЕСТВЕННЫМИ и в КЛАССЕ:

' 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

Пример получения тех же значений с помощью 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
0 голосов
/ 01 июля 2019

Может быть, вам нужен словарь:

dict.Add Key:="Orange", Item:=45

, если вы хотите установить значение «оранжевый», вы можете использовать его так:

dict("Orange") = 75

взятьсмотрите Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...