2016-04-25 3 views
1

Привет, дружелюбные и приятные люди. Идея следующая: у меня есть один словарь словарей, и я хотел бы установить его с помощью цикла, а не каждого отдельно. Есть идеи, как это сделать?VBA - Установить словарь с преобразованием в строку, например. EVAL

До сих пор у меня есть что-то вроде этого:

Public Sub mains() 

    Dim my_dict  As Object 
    Dim d1   As Object 
    Dim d2   As Object 
    Dim d3   As Object 
    Dim d4   As Object 
    Dim d5   As Object 
    Dim d6   As Object 
    Dim d7   As Object 
    Dim d8   As Object 
    Dim i   As Long 

    Set my_dict = CreateObject("Scripting.dictionary") 

    For i = 1 To 8 
     set cstr(d & i) = createobject("scripting.dictionary") 
    Next i 

End Sub 

ли это выполнимо в VBA? Множество cstr («d» & i) дает ошибку, конечно, но мне нужно что-то подобное и не устанавливать словари один за другим.

ответ

2

Вы не можете программировать имена переменных. Вместо этого используйте массив.

Dim dicts(8) As Variant 
For i = 0 To 7 
    Set dicts(i) = New Dictionary 
Next i 

В качестве альтернативы, так как ваша цель состоит в том, чтобы построить словарь словарей, вы можете сделать это прямо:

Dim dict as new Dictionary, tmp as Dictionary 
For i = 0 to 7 
    Set tmp = new Dictionary 
    dict.add "d" & i + 1, tmp 
next i 
+0

Да, похоже, это то, что я собираюсь использовать. Но я надеялся иметь альтернативу cstr() или что-то подобное. – Vityata