Select the top left cell for the column or range you wish to have red rows deleted.
Sub DelRedRows3()
Dim Rng As Range, c As Range
On Error GoTo end1
Set Rng = ActiveCell.Resize(ActiveSheet.UsedRange.Rows.Count, 1)
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Rng.EntireColumn.Insert shift:=xlToLeft
With Rng.Offset(0, -1)
.Formula = "=Row()"
For Each c In Rng.Cells
If c.Interior.ColorIndex = 3 Then _
c.Offset(0, -1).Formula = 0
Next c
.CurrentRegion.Sort key1:=.Cells(1), Order1:=xlAscending, header:=xlNo
.Cells(1).Resize(Application.CountIf(.Cells, 0), 1).EntireRow.Delete
end1:
If Err.Number <> 0 Then MsgBox "No Red cells were found"
.EntireColumn.Delete
End With
End Sub
This should run fairly fast, as it deletes all the red rows in one go.
My testing showed it slowed down after several runs, but the first one deleted 10,000 rows from a 40,000 row range within 3 seconds.
Regards Robert