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