При этом будет найдена первая непустая ячейка (которая будет указывать, что строка не пустая) над выбранной ячейкой.
Вам необходимо проверить:
- Если остальная часть листа пуста, он вернет тот же адрес, что и выбранный вами.
- Если все ячейки над выделением пусты, он будет начинаться с нижней части листа, пока не достигнет вашего выделения снова.
Как вы сказали, в первой непустой ячейке для подстановки используется подстановочный знак *
, чтобы вывести его из списка, который используется xlPrevious
.
Еще нужно проверить, является ли rng
ничем, если весь лист пуст.
Sub Test()
Dim Rng As Range
With ThisWorkbook.Worksheets("Sheet1").Range("A:Z")
Set Rng = .Cells.Find(What:="*", _
After:=Selection, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rng Is Nothing Then
If Rng.Address = Selection.Address Or Rng.Row > Selection.Row Then
MsgBox "Nothing found"
Else
Rng.Select
End If
End If
End With
End Sub