Hi Longhair,
I'm looking at your code and it appears that the count will be excessive. Meaning that it'll count down from A1 then A2 then A3, etc. This tells me that it won't get to B1 until its gone to the last cell in column A before it comes back up to B1.
Here's a code that I've written out so that it doesn't go thru every cell in the worksheet. It'll take only the cells used in the worksheet.
The only problem with this code is that if it deletes a row it continues from the part that it takes off. Remind you that when the row is deleted the next row shifts up. Which means that if cell B4 is the current cell that is highlighted and the row would be deleted then row C4 will become row B4. Next i will continue from where B4 left off which is wrong because were now at a new row.
I'm trying to rewrite the code so that it can start from the beginning of that row again, however I only have another 10 mins to work on this and I'm out of the office tommorrow. Perhaps someone else can add to this code or edit it.
Sub deleterows()
Dim i As Integer
Dim r As Range
Set r = Intersect(ActiveSheet.UsedRange, Range("A1:E65536"

) ' I assumed that the data will go up to column e, you can change this to whatever
i = 0
For i = 1 To r.Cells.Count
If ActiveCell.Interior.ColorIndex = 6 Or ActiveCell.Interior.ColorIndex = 27 Then 'not sure exactly which yellow is used but in the colorindex there's 2 possible values for yellow.
r.Cells(i).Select
Selection.EntireRow.Select
Selection.delete
Else
End If
Next i
End Sub