Попробуйте это. При использовании Find
всегда желательно указывать параметры, так как они могут иметь неожиданные настройки. Указав after
в качестве последней ячейки диапазона, поиск будет начинаться в первой ячейке, а не пропущен.
И убедитесь, что вы нашли что-то перед тем, как продолжить, чтобы избежать ошибок.
Альтернативный подход - использовать Match
, который будет хорошо работать в одномерном диапазоне.
(Также мне не нравится использовать Find
в качестве имени переменной, даже если это разрешено.)
Sub Find_Number()
Dim rFind As Range
With Range(Cells(1, 1), Cells(1, 5))
Set rFind = .Find(what:=1000, after:=.Cells(.Cells.Count), LookAt:=xlPart, _
SearchDirection:=xlNext, MatchCase:=False) 'might want to specify whole rather than part
If Not rFind Is Nothing Then Debug.Print rFind.Column 'avoid error if not found
End With
'alternative
'Dim v As Variant
'v = Application.Match(1000, Range(Cells(1, 1), Cells(1, 5)), 0)
'If IsNumeric(v) Then Debug.Print v
End Sub