View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
George Nicholson George Nicholson is offline
external usenet poster
 
Posts: 149
Default VBA help- Do While and If statements

Public Sub DeleteRows()
Dim rng As Range
Dim i As Long

Set rng = ActiveSheet.Range("MyData")

For i = rng.Rows.Count To 1 Step -1
If IsNumeric(rng.Cells(i, 3)) And IsNumeric(rng.Cells(i, 4)) Then
If Len(Trim(rng.Cells(i, 3))) 0 And Len(Trim(rng.Cells(i, 4)))
0 Then

' Non-blank, numeric values in both cells. Do not delete.
GoTo NextRow
End If
End If
rng.Cells(i, 1).EntireRow.Delete
NextRow:
Next i

End Sub

Note: using "jump-to" labels is generally frowned upon outside of error
handling. I make an exception to that and also use them (as above) in Loops
as a substitute for the non-existant "GoTo Next" statement. I find the
resulting code easier to read & much easier to maintain. Don't abuse GoTo's.

HTH,


"JAnderson" wrote in message
...
I'm a bit of a VBA novice, but I know this should be relatively simple.
Example:

A B C D
Bread Butter 15.00 17.00
Bread Cheese 14.00 11.00
Bread Meat ten 13.00
Bread Pickle x y
Bread Sandwich 11.00

I want Excel to delete all rows if there is text or nothing in cell C or
cell D. I want to keep all rows where there is a number in cell C or cell
D
of that row. Thus, the first two rows would stay while the last three
would
be deleted. I presume I would use the IsNumber function for part of this.

So I'm thinking of using a Do...While loop, but I can't figure out how to
incorporate the "If" statement to look at EITHER cell C OR cell D, or how
to
assign the number of rows that the loop will require. Any guidance on
this
please? Many thanks!