Чтобы сделать это без зацикливания, вы можете использовать FIND
, но это не даст никаких видимых улучшений при использовании небольшого диапазона.
Sub Copy()
Dim myWorkSheet As Worksheet
Dim myNamedRange As Range
Dim FirstEmptyCell As Range
Set myWorkSheet = ThisWorkbook.Worksheets("Sheet1")
Set myNamedRange = myWorkSheet.Range("L2:L11")
With myNamedRange
Set FirstEmptyCell = .Find( _
What:="", _
After:=.Cells(.Rows.Count, .Columns.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchDirection:=xlNext, _
SearchFormat:=False)
End With
If Not FirstEmptyCell Is Nothing Then
FirstEmptyCell = ActiveCell
Else
MsgBox "No empty cells found.", vbOKOnly + vbInformation
End If
End Sub