Use o método Range.find para encontrar a última linha.
Caso todas as células estejam vazias, você deve usar On error resume next
para suprimir um erro
Sub try()
Dim lastrow as long
On Error Resume Next
lastrow = [B4:B17].Find("*", [B4], , , xlByRows, xlPrevious).Row
On Error GoTo 0
End Sub