Вам нужно проверить, что что-то найдено, прежде чем вы сможете что-то вернуть с него.
Sub Test()
Dim r1 As Range
Dim lFoundRow As Long
Set r1 = Range("B:K").Find("WhatToFind")
If Not r1 Is Nothing Then
MsgBox "WhatToFind is on row " & r1.Row
lFoundRow = r1.Row
Else
MsgBox "Not found"
End If
End Sub
Я сомневаюсь, что это является причиной ошибки, но FIND
запоминает настройки с момента последнего использования (через код или вручную на листе с Ctrl+F
).
Вы можете установить каждый параметр на FIND
:
Sub Test()
Dim r1 As Range
Dim lRow As Long
With ThisWorkbook.Worksheets("Sheet1").Range("B:K")
Set r1 = .Find( _
What:="WhatToFind", _
After:=.Cells(1, 1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
MatchByte:=False, _
SearchFormat:=False)
If Not r1 Is Nothing Then
lRow = r1.Row
Else
MsgBox "Not found"
End If
End With
End Sub