Reimitando uma matriz no VBA
Eu tenho um problema sério com o redimensionamento de uma matriz bidimensional no VBA. Fiz muita leitura sobre esse problema (popular), mas ainda não consigo entender o que há de errado no meu código.
Então, eu tenho alguns dados em uma planilha. Na segunda linha eu tenho algumas descrições de um elemento, enquanto na primeira linha eu tenho categorias desses elementos. O que eu quero fazer é criar uma matriz que tenha categorias (distintas) na primeira linha e índices de descrições relacionadas a uma categoria específica na segunda linha. O código funciona corretamente até If j = UBound (distinctList, 2) Então ReDim entra e eu recebo um erro "Subscrito fora do intervalo". That If está lá para adicionar uma nova categoria e deve entrar em ação se a entrada da planilha não for igual a nenhuma entrada da nova matriz.
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