Если вы хотите продолжить поиск, вы можете использовать FindNext
вместо возобновления нового поиска.
Единственное, что вам нужно знать, это то, что FindNext
продолжит поиск сверху, как только это будет сделано. Чтобы иметь возможность сказать, что поиск начинается снова, вы сохраняете адрес первого совпадения, и если FindNext
возвращает вам адрес вашего первого совпадения, вы знаете, что все сделано.
Одно замечание к названию вашей переменной: Find/FindNext
return Ranges
, и вы должны дать своей переменной имя, которое отражает это. FindStr
подразумевает, что он содержит строку, что неверно. Значение по умолчанию для Range является его значением, поэтому оно может выглядеть так, как будто это строка, но это не так.
Посмотрите на этот кусок кода:
Const searchStr = "MANUALLY"
With .Sheets(c).Range("C2:C" & LRow)
Dim findRange As Range, firstHit As Range
Set findRange = .Find(searchStr, lookat:=xlWhole)
If Not findRange Is Nothing Then
Set firstHit = findRange ' Remember first hit.
Do
' ... (Do your stuff here)
Set findRange = .FindNext(findRange)
Loop While Not findRange Is Nothing And findRange.Address <> firstHit.Address
Else
' in case you didn't find anything
End If
End With