If you can avoid looping it will save some time on the bigger datasets. This method uses AutoFilter on an inserted column to delete the dersired rows
Cheers
Dave
Sub DelRowsII()
Dim myRange As Range, myCol As String
myCol = "A"
Set myRange = Range(Cells(1, myCol), Cells(65536, myCol).End(xlUp))
Application.ScreenUpdating = False
'insert a calculation row
myRange.Offset(0, 1).Columns.Insert
With myRange.Offset(0, 1)
.Formula = "=IF(OR(RC[-1]={""A"",""E"",""F"",""P""}),1,"""")"
.Value = .Value
'delete the rows with a 1 as they contain the matches
.AutoFilter Field:=1, Criteria1:="1"
.EntireRow.Delete
.EntireColumn.Delete
End With
Application.ScreenUpdating = True
End Sub