The fastest way to clear a collection is just to set the variable to a new Collection object. However, if it’s necessary to free the references the collection is keeping, it’s faster to empty the Collection from the beginning than the end.
Here is the test I used:
* Create a new standard EXE Project
* Add three Command Buttontons to Form1* Insert the following lines of code into Form1
Option ExplicitPrivate Declare Function GetTickCount Lib "kernel32" () As LongPrivate Function GetCollection(Count As Long) As CollectionDim Index As Long Set GetCollection = New Collection For Index = 1 To Count GetCollection.Add Nothing NextEnd FunctionPrivate Sub Command1_Click()Dim Col As CollectionDim TickCount As Long Set Col = GetCollection(10000) TickCount = GetTickCount() Set Col = New Collection MsgBox "TickCount: " & GetTickCount() - TickCountEnd SubPrivate Sub Command2_Click()Dim Col As CollectionDim TickCount As Long Set Col = GetCollection(10000) TickCount = GetTickCount() Do While Col.Count Col.Remove 1 Loop MsgBox "TickCount: " & GetTickCount() - TickCountEnd SubPrivate Sub Command3_Click()Dim Col As CollectionDim TickCount As Long Set Col = GetCollection(10000) TickCount = GetTickCount() Do While Col.Count Col.Remove Col.Count Loop MsgBox "TickCount: " & GetTickCount() - TickCountEnd Sub