Rewriting to prevent in addition to removing Activesheet. Consider utilizing a With statement to unambiguously link each action to the current sheet in addition to selecting and possibly exploring an alternative to Criteria1:="=" (as previously mentioned).
Sub Format_Worksheets()
Dim WS As Worksheet
Dim lRow As Long
Dim lCol As Long
For Each WS In ThisWorkbook.Worksheets
If WS.Name <> "Names" Then
With WS
.Rows("1:1").AutoFilter
.Range("$A$1:$Q$19").AutoFilter Field:=4, Criteria1:="="
lRow = .Range("A2").End(xlDown).Row
lCol = .Range("A2").End(xlToRight).Column
.Range(.Cells(lRow, 1), .Cells(lRow, lCol)).Delete shift:=xlUp
.Range("$A$1:$Q$16").AutoFilter Field:=4
lCol = .Range("G1").End(xlToRight).Column
.Range("G1", .Cells(1, lCol)).Delete shift:=xlToLeft
End With
End If
Next WS
End Sub
If this works out for you, please let me know. It worked for me, but I'm not sure if the formatting will be exactly the same as what you did. Although I rewrote it without the terms ".select" or ".activate," it's often difficult to determine without examining the data.