I can't for the life of my figure out why I'm getting "'Range' of object'_global' failed" on my do while statement. It's like the range named RC3 isn't being recognized. Any help is greatly appreciated.
Sub DeleteBlankRows()
Dim Allrws As Range
Dim Rws As Range
Dim RC2 As Range
Dim RC3 As Range
Dim I As Integer
Dim CopyRange As Range
Dim LastRow As Long
With Application
'.ScreenUpdating = False ' don't spam the interface with selections
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' Put the number of the last row in LastRow
End With
Set Allrws = Range("A2:S" & CStr(LastRow)) ' set range to be observed
For Each Rws In Allrws.Rows ' for each row in the range of Allrws call it Rws and do the following with it
Set RC2 = Rws.Offset(0, 3).Resize(1, 1) ' move and resize the range of RC2 to include only the cell under column D
Set RC3 = Rws.Offset(0, 7).Resize(1, 1) ' move and resize the range of RC3 to include only the cell under column I
I = 0 ' initilize the rows deleted counter
Do While (Range(RC3).Value <> "" And I < 30) ' as long as RC points to a empty cell and we haven't removed more then 30 rows keep removing rows
If (range(RC2).Value = "Permit & Design" Or range(RC2).Value = "Miscellanious") Then 'don't delete row if Permit & Design or Miscellanious is in the cell under column D
I = 30 ' escape the loop if true
Else
Selection.EntireRow.Delete ' delete the selected row if false
I = I + 1 ' add 1 to the counter
End If
Loop ' Go back to the start of the Do While
Next Rws ' go back to the For Each and put the next row in Rws
.ScreenUpdating = True ' now update the interface with the changes
end with
end sub
RC3is already a Range, so no need for range(range), justRC3.ValueSelection.EntireRow.Deleteseems to be deleting an unspecified, arbitrary user-selected row. Probably not what you intend. Why work offSelectionanyway?