Как отсортировать коллекцию?

Кто-нибудь знает, как отсортировать коллекцию в VBA?

28
задан stakx supports GoFundMonica 28 August 2012 в 14:27
поделиться

2 ответа

Код ниже из этого сообщения использует сортировку пузырьком

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
23
ответ дан 28 November 2019 в 02:19
поделиться

В VBA нет встроенной сортировки для Коллекции, но, поскольку вы можете получить доступ к элементам в коллекции через индекс, вы можете реализовать алгоритм сортировки для прохождения коллекции и сортировки в новую коллекцию.

Вот реализация алгоритма HeapSort для VBA/VB 6.

Вот то, что выглядит как реализация алгоритма пузырьковой сортировки для VBA/VB6.

7
ответ дан 28 November 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: