Try:
Code:
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For Z = lastRow to 2 Step -1
If Cells(Z, 4) = "" Then Cells(Z, 4).EntireRow.Delete
Next Z
The problem with a forward-working For .. Next loop when you're deleting items is that, upon deletion, the next item moves into the deleted item's position and doesn't get tested on the next iteration, because it's no longer at its former location.
PS: When posting code, please use the code tags. They're on the 'Go Advanced' tab.