Во-первых, как я уже сказал в своем комментарии, это:
Set matrixVal = Sheets("Localizações").Range("B1")
устанавливает matrixVal
как одну отдельную ячейку (точнее, B1), поэтому в вашем цикле For-Each
нет циклов, кроме этой отдельной ячейки, поэтому он будет выполняться только один раз.
Во-вторых, FindString
необходимо обновить внутри цикла, иначе вы будете искать одно и то же значение снова и снова.
Наконец, вы не должны обновлять переменную Rng
внутри цикла, потому что вы уже используете ее для циклического перемещения по диапазону. Вам нужна вторая переменная типа Range
.
Ваш код должен выглядеть так:
Sub ciclo()
Dim FindString As String
Dim Rng As Range
Dim cell As Range
Dim matrixVal As Range
Set matrixVal = ThisWorkbook.Worksheets("Localizacoes").Range("B1:B9")
For Each cell In matrixVal
FindString = cell.Value
If Trim(FindString) <> "" Then
With ThisWorkbook.Worksheets("Arm8").Range("A1:J10")
Set Rng = .Find(What:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
With ThisWorkbook.Worksheets("Localizacoes")
.Cells(cell.Row, "C").Value = Rng.Column
.Cells(cell.Row, "D").Value = Rng.Row
End With
Else
MsgBox "Nothing found"
End If
End With
End If
Next cell
End Sub