The code is here and you get a Run-time error '424' Object required on the first line of the for each statement
Public Sub test()
Dim a As clsTest
Dim dic As Dictionary
Dim tmpObj As clsTest
Set dic = New Dictionary
Set a = New clsTest
dic.Add "1", a
dic.Add "2", New clsTest
dic.Add "3", New clsTest
For Each tmpObj In dic.Items '--<< error: Run-time error '424' Object required
Debug.Print tmpObj.i
Next tmpObj
Stop
End Sub
Three options
1)
Dim tmpObj As Variant
For Each tmpObj In dic.Items
Debug.Print tmpObj.i
Next tmpObj
2)
for i = 0 to dic.Count - 1
set tmpObj = dic.Items(i)
...
3)
Public Sub test()
Dim a As clsTest
Dim dic As Dictionary
Dim vTmpObj As Variant
Dim tmpObj As clsTest
Set dic = New Dictionary
Set a = New clsTest
dic.Add "1", a
dic.Add "2", New clsTest
dic.Add "3", New clsTest
For Each vTmpObj In dic.Items
Set tmpObj = vTmpObj
Debug.Print tmpObj.i
Next vTmpObj
you have two choices:. Declare the variable as a variant:
Dim tmpObj As Variant
For Each tmpObj In dic.Items
Debug.Print tmpObj.i
Next tmpObj
Or iterate over the collection:
Dim tmpObj As clsTest
For i = 0 To dic.Count - 1
Set tmpObj = dic.Items(i)
Debug.Print tmpObj.i
Next i
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With