Estou tentando fazer uma matriz que armazena todos os valores na coluna A da "Pasta de trabalho B" para que eu possa fazer referência e ver se o valor de uma célula está nessa matriz na coluna A da "Pasta de trabalho A".
Isto é o que eu tenho até agora para essa matriz:
Dim StrArray() As String
Dim TotalRows As Long
Dim X As Long
Workbooks.Open Filename:="filepath", ReadOnly:=True
With Workbooks("file").Worksheets("sheet")
TotalRows = Rows(Rows.Count).End(xlUp).Row
ReDim StrArray(1 To TotalRows)
For X = 2 To TotalRows
StrArray(X) = Cells(X, 1).Value
Next X
End With
Esta parte da matriz funciona bem, confirmei que está funcionando corretamente exibindo todos os valores da matriz em um MsgBox. O problema surge quando tento referenciar essa matriz na "Pasta de trabalho A" para verificar se o valor de uma célula está nessa matriz.
Isto é o que eu tenho para esse código:
For RowCounter = LastRow To 1 Step -1
If IsInArray(Range("B" & RowCounter).Value, StrArray) Then
Range("K" & RowCounter).Value = "MATCH"
End If
Next RowCounter
Workbooks("file").Close SaveChanges:=False
Aqui está a função que estou usando:
Public Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
Dim i
For i = LBound(arr) To UBound(arr)
If arr(i) = stringToBeFound Then
IsInArray = True
Exit Function
End If
Next i
IsInArray = False
End Function
Ele não coloca o valor "MATCH" na coluna K. Eu tentei solucionar problemas colocando um MsgBox na instrução If para ver se ele está correspondendo ao valor da matriz, e isso me deu um loop sem fim do MsgBox. Se for importante, atualmente existe texto na coluna K sobre o qual este código está escrevendo.