|I'd be very surprised if that simple change worked consistently.|
When you loop through a range of rows and delete any of them, you screw up the For-Next loop.
For example, this code will not delete rows 1 through 10:
For myRow = 1 to 10
Once you delete Row 1, Row 2 will move up to take it's spot. The loop will then increment and tell VBA to delete Row 2, leaving the old Row 2 in Row 1's spot. This will continue throughout the loop so that you will only delete every other row.
Therefore, in your case, when you find a row that matches your deletion criteria, it will indeed delete that row, but it will also move all of the others rows up. If the very next row also meets your deletion criteria, it will not get deleted because the Loop counter will have incremented past that row.
In order to not miss any rows when deleting them, you have to loop through the range in reverse order.
This code will delete rows 1 through 10.
For myRow = 10 to 1 Step -1