Reputation: 43585
Hello friendly and nice people. The idea is the following - I have one dictionary of dictionaries and I would like to set it with a loop and not each one separately. Any idea how to do it?
So far I have something like this:
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
Is it doable in VBA? The set cstr("d"& i) gives an error of course, but I want something similar and not to set the dictionaries one by one.
Upvotes: 1
Views: 723
Reputation: 3037
You can't construct variable names programmatically. Use an array instead.
Dim dicts(8) As Variant
For i = 0 To 7
Set dicts(i) = New Dictionary
Next i
Alternatively, since your goal is to build a dictionary of dictionaries, you can do this directly:
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
Upvotes: 2