Looping

To loop through the items in a collection you can use a For - Next loop or a For Each - Next loop.
The For Each - Next loop will iterate through the entire collection.


For - Next

You can iterate through the items of a collection using a For - Next loop
This type of loop is called an Indexed loop.
Notice that 'sMyItem' has a String data type.

Dim colMyItems As Collection 
Set colMyItems = New Collection
colMyItems.Add "Monday"
colMyItems.Add "Tuesday"
colMyItems.Add "Wednesday"

Dim lcount As Long
Dim sMyItem As String
For lcount = 1 To colMyItems.Count
   sMyItem = colMyItems.Item(lcount)
   Debug.Print sMyItem
Next lcount

For Each - Next

You can iterate through all the items of a collection using a For Each - Next loop
Using a For Each - Next loop to iterate through a collection is faster than using a For - Next loop.
The item variable must be of type Variant.
It is possible to use an Object data type but this is not recommended (see below).

Dim colMyItems As Collection 
Set colMyItems = New Collection
colMyItems.Add "Monday"
colMyItems.Add "Tuesday"
colMyItems.Add "Wednesday"

Dim vMyItem As Variant
For Each vMyItem In colMyItems
    Debug.Print vMyItem
Next vMyItem

MyItem As Variant

The item variable must be of type Variant when the collection contains a Value data type
For example: Boolean, Currency, Date, Double, Integer, Long, Single, String.

Dim vMyItem As Variant 
For Each vMyItem In colMyItems
    Debug.Print vMyItem
Next vMyItem

MyItem As Object

The item variable can be of type Object or Variant when the collection contains a Class or Object.
Try to always declare your item variable with the Variant data type when you are looping through a custom collection.

Dim colMyItems As Collection 
Set colMyItems = New Collection

Dim MyClass As class_Testing
Set MyClass = New class_Testing
colMyItems.Add MyClass
colMyItems.Add MyClass

Dim oItem As Object
For Each oItem In colMyItems
    Debug.Print TypeName(oItem)
Next oItem

To run this code, create an empty class module called "class_Testing".


© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext