Переопределение массива в VBA

У меня серьезная проблема с изменением размера 2-мерного массива в VBA. Я'я много читал об этой (популярной) проблеме, но все же могуне могу понять, чтонеправильно в моем коде.

Итак, у меня есть некоторые данные в электронной таблице. Во втором ряду у меня есть некоторые описания элемента, в то время как в первом ряду у меня есть категории этих элементов. Что я хочу сделать, это создать массив, который имеет (различные) категории в первой строке и индексы описаний, связанных с определенной категорией во второй строке. Код работает правильно до тех пор, пока если j = UBound (diverList, 2), то тогда приходит ReDim и я получаю "Ошибка индекса вне диапазона ", То, если есть, чтобы добавить новую категорию и предназначен для включения, если запись из электронной таблицы не совпадает ни с одной записью из нового массива.

Function distinctValues(arr)
Dim distinctList() As String
Dim j As Integer
k = 0

'ReDim distinctList(0 To 0, 0 To 1)

'Dodaj pierwszy wpis
For i = LBound(arr) To UBound(arr)
    If arr(i)  "" Then
        ReDim distinctList(0 To 1, 0 To j)
        distinctList(0, 0) = arr(i)
        distinctList(1, 0) = i + 1
        'k = k + 1
        Exit For
    End If
Next i

'Dodaj kolejne wpisy
For i = LBound(arr) + 1 To UBound(arr)
    If arr(i)  "" Then
        For j = LBound(distinctList, 2) To UBound(distinctList, 2)
            If arr(i) = distinctList(0, j) Then
                distinctList(1, j) = distinctList(1, j) & ", " & i + 1
                'k = k + 1
                Exit For
            End If
            If j = UBound(distinctList, 2) Then
                ReDim Preserve distinctList(0 To 1, 1 To UBound(distinctList, 2) + 1)
                distinctList(0, j) = arr(i)
                distinctList(1, j) = distinctList(UBound(distinctList, 2), 1) & ", " & i + 1
                Exit For
            End If
        Next j
    End If
Next i


Debug.Print distinctList(0, 0) & " => " & distinctList(1, 0)
'distinctValues = distinctList

End Function

Ответы на вопрос(2)

Ваш ответ на вопрос