Как получить ключ для одного элемента в коллекции Excel VBA - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь написать обобщенную сортировку, которая будет сортировать коллекцию VBA по ключу. Я использую сортировку здесь в качестве отправной точки.

Сортировка не работает, если коллекция содержит объекты (как показано ниже). Как изменить код, чтобы получить ключ для сортировки?

Информация, которую я смог найти, получает коллекцию ключей, а не получает ключ для отдельного элемента (например, здесь: Коллекция VBA: список ключей ).

Текущий код, показанный ниже, дает «Объект не поддерживает это свойство или метод» в строке Debug.print.

Public Function sort(ByRef col As VBA.collection)
    For i = 1 To col.Count - 1
        For j = i + 1 To col.Count
            Debug.Print ("Key: " & col(i))
            If col(i) > col(j) Then
                'store the lesser item
                temp = col(j)
                'remove the lesser item
                col.Remove j
                're-add the lesser item before the greater item
                col.Add temp, temp, i
            End If
        Next j
    Next i
End Function

Sub test()
    Dim col As collection
    Set col = New collection
    Dim pi As ProgramIncrement
    ' val
    Set pi = New ProgramIncrement
    pi.name = "foo3"
    col.Add pi, pi.name
    ' val
    Set pi = New ProgramIncrement
    pi.name = "foo0"
    col.Add pi, pi.name
    ' val
    Set pi = New ProgramIncrement
    pi.name = "foo2"
    col.Add pi, pi.name
    ' val
    Set pi = New ProgramIncrement
    pi.name = "foo1"
    col.Add pi, pi.name

    ' sort
    sort col
    Debug.Print ("Done.")

End Sub

' ---------------------------------------------------------------
'
' Class to represent Program Increment
'
' ---------------------------------------------------------------

Public name As String

Public sprints As New collection
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...