Implicit late binding strikes again! ActiveSheet is an Object, not a Worksheet - any member calls you make directly against it, are inherently late-bound. That is, they can only be resolved at run-time, and you get zero compiler or IDE assistance when writing the code.
If you declared a Worksheet object:
Dim ws As Worksheet
...and assigned it to the ActiveSheet:
Set ws = ActiveSheet
...then tried to invoke its AutoFilter property:
ws.AutoFilter 
...you'd quickly notice something is off: Worksheet.AutoFilter isn't a method, but a property (and it's Nothing if filtering is off). You mean to use the Range.AutoFilter method.
Working with Selection will work, but will be just as late-bound as working with ActiveSheet.
Work with a Range instead - CurrentRegion just happens to be exactly that!
ws.Range("A1").CurrentRegion.AutoFilter
And now when you type the Space after that member call, you'll get parameter quick-info showing you what the parameters are - note that Field and Criteroa1 are respectively the first and second parameters in the member's signature - this means the named arguments are actually redundant / the parameter names and the := operators can be omitted, and the values passed normally:

ws.Range("A1").CurrentRegion.AutoFilter 3, "blanks"
ws.Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:="blanks" '<~ exactly equivalent to the above