Sometimes it's a lot easier to start at the bottom up:
Option Explicit
Sub RemoveZeroRows2()
Application.ScreenUpdating = False
Dim rCtr As Long
With ActiveSheet
For rCtr = .Cells(.Rows.Count, "A").End(xlUp).Row To 1 Step -1
If .Cells(rCtr, "A") = 0 _
And IsEmpty(.Cells(rCtr, "A")) = False Then
.Rows(rCtr).Delete
End If
Next rCtr
End With
Application.ScreenUpdating = True
End Sub
But if you want to start at the top down, you can build your range and delete it
all at once.
Option Explicit
Sub RemoveZeroRows3()
Application.ScreenUpdating = False
Dim delRng As Range
Dim myCell As Range
With ActiveSheet
For Each myCell In .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))
If myCell.Value = 0 _
And IsEmpty(myCell) = False Then
If delRng Is Nothing Then
Set delRng = myCell
Else
Set delRng = Union(myCell, delRng)
End If
End If
Next myCell
End With
If delRng Is Nothing Then
'do nothing
Else
delRng.EntireRow.Delete
End If
Application.ScreenUpdating = True
End Sub
===
And just a word of warning: Excel sees empty cells as having a value of 0.