Iterating over a nested Dictionary object

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.
 
J

Jim Cone

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.
 
D

donvreug

Thanks for spotting that Jim.

The original problem remains however.

Any other thoughts?

Regards

Don
 
J

Jim Cone

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top