Iterating over a nested Dictionary object

  • Thread starter Thread starter donvreug
  • Start date Start date
D

donvreug

Hi,

I've setup a nested Dictionary object using classes that initialise
nested dictionary objects. This appears to build ok, however when I
try and iterate over this nested object I get the following debug
message:

"Run-time error '424', Object required"

My code snippet is as follows;

For i = 1 to MDict.Count
For j = 1 to MDict.Items(i).subDict1.Count
For k = 1 to MDict.Items(i).subDict1.Items(j).subDict2.Count
...
Next k
Next j
Next i

The run-time error occurs on the For j = 1... line.

I'm not sure the syntax is correct as this is my first attempt at
using Dictionaries.

I also tried the following with the same result.

For Each md In MDict.items
For Each sd1 In MDict.Item("subDict1").Items
For ach sd2 In MDict.Item("subDict1").Item("subDict2").Items
...
Next
Next
Next

Any help is greatly appreciated.
 
A Dictionary object is zero based.
Your loops should start at zero and end at one less than the count...
For i = 0 to MDict.Count - 1
--
Jim Cone
Portland, Oregon USA



"donvreug"
<[email protected]>
wrote in message
Hi,
I've setup a nested Dictionary object using classes that initialise
nested dictionary objects. This appears to build ok, however when I
try and iterate over this nested object I get the following debug
message:
"Run-time error '424', Object required"

My code snippet is as follows;
For i = 1 to MDict.Count
For j = 1 to MDict.Items(i).subDict1.Count
For k = 1 to MDict.Items(i).subDict1.Items(j).subDict2.Count
...
Next k
Next j
Next i

The run-time error occurs on the For j = 1... line.
I'm not sure the syntax is correct as this is my first attempt at
using Dictionaries.

I also tried the following with the same result.
For Each md In MDict.items
For Each sd1 In MDict.Item("subDict1").Items
For ach sd2 In MDict.Item("subDict1").Item("subDict2").Items
...
Next
Next
Next

Any help is greatly appreciated.
 
Thanks for spotting that Jim.

The original problem remains however.

Any other thoughts?

Regards

Don
 
Don,
'Assigns value returned by the Items method to a variant array
'and iterates thru that...

Dim vItems As Variant
Dim vTemp As Variant
'variant array contains all sub dictionaries
vItems = mDict.Items

For i = 0 To UBound(vItems)
'variant array contains all items in subdictionary
vTemp = vItems(i).Items
For j = 0 To UBound(vTemp)
'Assumes, each item in the subdictionary
'contains a range object
For k = 1 To vTemp(j).Count
MsgBox vTemp(j)(k).Value
Next 'k
Next 'j
Next 'i
--
Jim Cone
Portland, Oregon USA


"donvreug"
wrote in message
Thanks for spotting that Jim.
The original problem remains however.
Any other thoughts?
Regards
Don
 
Back
Top