VBA найти и найти для вставки значений

У меня есть этот лист, где я хочу использовать Find и FindNext для поиска значений на другом листе BD и скопировать их в мой основной лист Plan1 если значение в alocacao соответствует ячейкам в Column 5 .

Раньше у меня было 4 пробела с именованными диапазонами tecnico1, tecnico2, tecnico3 and tecnico4 чтобы вставить значения, и код работает нормально.

Вот как это выглядит:

введите описание изображения здесь

И лист BD:

введите описание изображения здесь

И это код:

 Sub VerifProd_Click() Dim FoundCell As Range, FirstAddr As String, fnd As String, i As Long fnd = Sheets(1).Range("alocacao").Value Set FoundCell = Sheets("BD").Columns(5).Find(what:=fnd, _ After:=Sheets("BD").Cells(Rows.Count, 5), Lookat:=xlPart, _ LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext) If FoundCell Is Nothing Then Exit Sub Do i = i + 1 Sheets("Plan1").Range("tecnico" & i).Value = FoundCell.Offset(, -3).Value Sheets("Plan1").Range("upps0" & i).Value = FoundCell.Offset(, -1).Value Set FoundCell = Sheets("BD").Columns(5).FindNext(After:=FoundCell) Loop Until FoundCell.Address = FirstAddr Or i >= 4 End Sub 

Тем не менее, теперь я понимаю, что мне понадобится больше полей, потому что я могу вставить более 4 tecnicos на alocacao . Итак, вот как это выглядит:

введите описание изображения здесь

И я просто изменил эту часть кода:

 If FoundCell Is Nothing Then Exit Sub Do i = i + 1 Sheets("Plan1").Range("tecnico" & i).Value = FoundCell.Offset(, -3).Value Sheets("Plan1").Range("upps0" & i).Value = FoundCell.Offset(, -1).Value Set FoundCell = Sheets("BD").Columns(5).FindNext(After:=FoundCell) Loop Until FoundCell.Address = FirstAddr Or i >= 10 

Поэтому я ожидал, что он просто заполнит 4 поля, поскольку у меня все еще есть только 4 матча, но я получил этот результат:

введите описание изображения здесь

Поскольку я новичок в Find и FindNext, я действительно не знаю, что мне нужно изменить, чтобы заполнить ячейки совпадениями, не повторяя его.

Любые предложения помогут! Может быть, я чего-то не заметил.

Я просто использовал предложение @Luuklag, и теперь он работает.

 Sub VerifProd_Click() Dim FoundCell As Range, FirstAddr As String, fnd As String, i As Long fnd = Sheets(1).Range("alocacao").Value Set FoundCell = Sheets("BD").Columns(5).Find(what:=fnd, _ After:=Sheets("BD").Cells(Rows.Count, 5), Lookat:=xlPart, _ LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext) If Not FoundCell Is Nothing Then FirstAddr = FoundCell.Address End If If FoundCell Is Nothing Then Exit Sub Do i = i + 1 Sheets("Plan1").Range("tecnico" & i).Value = FoundCell.Offset(, -3).Value Sheets("Plan1").Range("upps0" & i).Value = FoundCell.Offset(, -1).Value Set FoundCell = Sheets("BD").Columns(5).FindNext(After:=FoundCell) Loop Until FoundCell.Address = FirstAddr Or i >= 10 End Sub 
Давайте будем гением компьютера.