[COLOR=blue]Option[/COLOR] [COLOR=blue]Explicit[/COLOR]
[COLOR=blue]Sub[/COLOR] test()
[COLOR=blue]Dim[/COLOR] cCollection [COLOR=blue]As[/COLOR] clsCollection
[COLOR=blue]Dim[/COLOR] wst [COLOR=blue]As[/COLOR] Worksheet
[COLOR=blue]Dim[/COLOR] obj [COLOR=blue]As[/COLOR] [COLOR=blue]Object[/COLOR]
[COLOR=blue]Set[/COLOR] cCollection = [COLOR=blue]New[/COLOR] clsCollection
[COLOR=green]'for this example, let's add all the worksheets in this workbook into[/COLOR]
[COLOR=green]'our custom collection[/COLOR]
[COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] wst [COLOR=blue]In[/COLOR] ThisWorkbook.Worksheets
cCollection.Add wst
[COLOR=blue]Next[/COLOR] wst
[COLOR=green]'now let's prove we can use a[/COLOR]
[COLOR=green]'For each loop to loop through our custom collection[/COLOR]
[COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] obj [COLOR=blue]In[/COLOR] cCollection
[COLOR=blue]Stop[/COLOR]
[COLOR=blue]Next[/COLOR] obj
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]
[COLOR=blue]Option[/COLOR] [COLOR=blue]Explicit[/COLOR]
[COLOR=blue]Private[/COLOR] fWorksheets [COLOR=blue]As[/COLOR] Collection
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Class_Initialize()
[COLOR=blue]Set[/COLOR] fWorksheets = [COLOR=blue]New[/COLOR] Collection
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]
[COLOR=green]''''''''''''''''''''''''''''''''''''''''''''''[/COLOR]
[COLOR=green]'interface[/COLOR]
[COLOR=blue]Public[/COLOR] [COLOR=blue]Sub[/COLOR] Add([COLOR=blue]ByVal[/COLOR] wst [COLOR=blue]As[/COLOR] Excel.Worksheet)
fWorksheets.Add wst
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]
[COLOR=green]'you will want other methods/properties such as Count / Remove / Item[/COLOR]
[COLOR=#008000]'so it feels like a VBA collection[/COLOR]
[COLOR=#008000][/COLOR]
[COLOR=green]'enable For...Each loops[/COLOR]
[COLOR=blue]Public[/COLOR] [COLOR=blue]Function[/COLOR] NewEnum() [COLOR=blue]As[/COLOR] IUnknown
[COLOR=blue]Set[/COLOR] NewEnum = fWorksheets.[_NewEnum]
[COLOR=blue]End[/COLOR] [COLOR=blue]Function[/COLOR]
Public Function NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemID = -4
Set NewEnum = fWorksheets.[_NewEnum]
End Function
For i = 1 To 3
MsgBox "Hip hip.... hooray!"
Next i
Public Function ForEachItem(ByRef item As RecapItem) As Boolean
Dim result As Boolean
result = False
Set item = Me.GetRecapItem(currentPos)
If Not item Is Nothing Then
currentPos = currentPos + 1
result = True
Else
Me.ResetPos
End If
ForEachItem = result
End Function
While manager.ForEachItem(recapItem)
Debug.Print recapItem.BranchInfo.Name
Wend