Вы можете использовать ту же функцию, просто проверьте, не пуста ли первая строка.
Dim firstRow as Integer
If ActiveSheet.Range("A1").value = "" Then
firstRow = ActiveSheet.Range("A1").End(xlDown).Row
Else
firstRow = 1
End If
Если первая строка не пуста и вы используете вызов End(xlDown)
, вы не получите первую непустую ячейку, вы получите последнюю непустую ячейку перед первой пустой ячейкой.