Если ваша коллекция не содержит объектов, и вам нужно только сортировать по возрастанию, вам может быть проще понять это:
Sub Sort(ByVal C As Collection)
Dim I As Long, J As Long
For I = 1 To C.Count - 1
For J = I + 1 To C.Count
If C(I) > C(J) Then Swap C, I, J
Next
Next
End Sub
'Take good care that J > I
Sub Swap(ByVal C As Collection, ByVal I As Long, ByVal J As Long)
C.Add C(J), , , I
C.Add C(I), , , J + 1
C.Remove I
C.Remove J
End Sub
Я взломал это за считанные минуты, так что это может быть не лучший вид пузырьков, но он должен быть легко понят и, следовательно, легко модифицироваться для ваших целей.