Кто-нибудь знает, как отсортировать коллекцию в VBA?
Код ниже из этого сообщения использует сортировку пузырьком
Sub SortCollection()
Dim cFruit As Collection
Dim vItm As Variant
Dim i As Long, j As Long
Dim vTemp As Variant
Set cFruit = New Collection
'fill the collection
cFruit.Add "Mango", "Mango"
cFruit.Add "Apple", "Apple"
cFruit.Add "Peach", "Peach"
cFruit.Add "Kiwi", "Kiwi"
cFruit.Add "Lime", "Lime"
'Two loops to bubble sort
For i = 1 To cFruit.Count - 1
For j = i + 1 To cFruit.Count
If cFruit(i) > cFruit(j) Then
'store the lesser item
vTemp = cFruit(j)
'remove the lesser item
cFruit.Remove j
're-add the lesser item before the
'greater Item
cFruit.Add vTemp, vTemp, i
End If
Next j
Next i
'Test it
For Each vItm In cFruit
Debug.Print vItm
Next vItm
End Sub
В VBA нет встроенной сортировки для Коллекции
, но, поскольку вы можете получить доступ к элементам в коллекции через индекс, вы можете реализовать алгоритм сортировки для прохождения коллекции и сортировки в новую коллекцию.
Вот реализация алгоритма HeapSort для VBA/VB 6.
Вот то, что выглядит как реализация алгоритма пузырьковой сортировки для VBA/VB6.