Это может помочь:
Sub Kompressor()
Dim nLastRow As Long, nFirstRow As Long, i As Long
Set r = ActiveSheet.UsedRange
nLastRow = r.Rows.Count + r.Row - 1
nFirstRow = r.Row
For i = nLastRow To nFirstRow Step -1
With Cells(i, 1)
If .Value = "" Then .EntireRow.Delete
End With
Next i
End Sub
Обратите внимание, что мы запускаем цикл в обратном направлении .
Код будет работать немного быстрее, если мы удалим только один раз.