View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Patrick Molloy[_4_] Patrick Molloy[_4_] is offline
external usenet poster
 
Posts: 103
Default macro to clear rows

you need to reverse the loop. a for-next your way 'skips' a row when
deleting
think of it, let us suppose you test A400 which is zero. delete row 400, so
what was 401 becomes 400 and the 'next' part of the loop increments the
counter to 401. thus you simply misses what was 401.

Sub delete()
With ActiveSheet
For rwIndex = 200 to 1 STEP -1
If .Cells(rwIndex, 1).Value = 0 Then
Rows(rwIndex).delete
End If
Next rwIndex
End With
End Sub

Note that I moved the WITH statement outside the loo too...
--
Patrick Molloy
Microsoft Excel MVP
----------------------------------
"Peter H" wrote in message
...
Hi, I have a most likely easy question that is absolutely
stumping me.

Let's say I have two columns of data. Whenever the data
in columnA is zero, I want to delete (clear contents) that
entire row of data. Thus, if cell A40 was zero, B40 would
be deleted as well.

I don't even care of the rest of the data is shifted up
with a delete. My problem is that when I run the macro,
it misses a bunch of the zeros that it was supposed to
detect. Any help?

Here's what I'm working with:



Sub delete()

For rwIndex = 1 To 200
With ActiveSheet.Cells(rwIndex, 1)
If ((.Value) = 0) Then
Rows(rwIndex).delete
End If
End With
Next rwIndex

End Sub