If speed were a concern then I would make the point that as much as ScreenUpdating will slow code, given Deletion of Rows is a Volatile action if you have Volatile functions you're best served forcing Calculation to Manual prior to implementation of Deletion Loop and restoring Calc to it's former setting on completion ... and if you do that you may as well do all three, ie: screenupdate, calculation & events.
An example below:
Public Sub Example()
Dim xlCalc As XlCalculation, tblRows2 As Long, i As Long
On Error GoTo Handler
tblRows2 = Cells(Rows.Count, "A").End(xlUp).Row
With Application
xlCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
For i = tblRows2 To 3 Step -1
If Cells(i, "A") = 1 Then Rows(i).Delete
Next i
ExitPoint:
.Calculation = xlCalc
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
Handler:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Resume ExitPoint
End Sub
Bookmarks