Apenas no caso de você não saber, não é necessário .Activate
ou .Select
esses intervalos - tudo isso é significativo para retardar seu código e fazer sua tela ficar estranha coisas ... Mas isso pode ter sido feito para fins de teste, o que é bom.
Além disso, você deve adicionar Option Explicit
à parte superior de seus módulos, pois nunca declarou seus objetos da planilha. Eu fiz isso por você.
Você pode usar o método .FindNext
para fazer o que está pedindo.
Option Explicit
Sub test()
Dim ws As Worksheet, Final As Worksheet
Set Final = ThisWorkbook.Worksheets("Tab 1")
Set ws = ThisWorkbook.Worksheets("Tab 2")
Dim EndNum As Long
EndNum = ws.Cells(Rows.Count, 1).End(xlUp).Row
Dim sToFind As String, rngFind As Range, addrStart
sToFind = ws.Range("K2").Value
With ws.Range("A1:A" & EndNum)
Set rngFind = .find(sToFind, LookIn:=xlValues)
If Not rngFind Is Nothing Then
addrStart = rngFind.Address
Do
ws.Activate
rngFind.Select
'my code
Set rngFind = .FindNext(rngFind)
Loop While Not rngFind Is Nothing And rngFind.Address <> addrStart
End If
End With
End Sub
O motivo pelo qual For Each r In FindVar
não funcionou foi que FindVar
foi um intervalo de 1x1
.