Не используйте Selection и ActiveCell. Возьмите нижнюю ячейку столбца и поднимитесь через End(xlUp). Если столбец пустой, получите строку 1 — проверьте это отдельно. Для таблиц смотрите ListObject.DataBodyRange.Rows.Count.
Последняя заполненная строка без Select
Нужно понять, где кончаются данные в столбце, и не кликать по листу.
Код
Function LastRowInColumn(ws As Worksheet, col As Long) As Long
LastRowInColumn = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
End Function
Sub Demo()
Dim lastRow As Long
lastRow = LastRowInColumn(ThisWorkbook.Worksheets("Данные"), 1)
If lastRow < 2 Then Exit Sub
Debug.Print lastRow
End Sub