Option Explicit Private mcolX As Collection Private Sub Command1_Click() Dim objInvoice As clsInvoice Set mcolX = New Collection Set objInvoice = New clsInvoice objInvoice.InvoiceNumber = "i010" objInvoice.Amount = 10 Call AddItemToColl(objInvoice) Set objInvoice = New clsInvoice objInvoice.InvoiceNumber = "i020" objInvoice.Amount = 20 Call AddItemToColl(objInvoice) Set objInvoice = New clsInvoice objInvoice.InvoiceNumber = "i001" objInvoice.Amount = 1 Call AddItemToColl(objInvoice) Set objInvoice = New clsInvoice objInvoice.InvoiceNumber = "i025" objInvoice.Amount = 25 Call AddItemToColl(objInvoice) Call DisplayColl End Sub Private Sub AddItemToColl(ByVal pobjInv As clsInvoice) Dim intPos As Integer Dim x As clsInvoice intPos = 0 For Each x In mcolX If x.Amount > pobjInv.Amount Then Exit For End If intPos = intPos + 1 Next If mcolX.Count = 0 Then mcolX.Add pobjInv ElseIf intPos = 0 Then mcolX.Add pobjInv, , 1 Else mcolX.Add pobjInv, , , intPos End If End Sub Private Sub DisplayColl() Dim x As clsInvoice For Each x In mcolX MsgBox x.InvoiceNumber & ": " & x.Amount Next End Sub