Опять неявные поздние связывающие удары! ActiveSheet
- это Object
, а не Worksheet
- любые вызовы участников, которые вы делаете прямо против него, по своей сути являются поздними. То есть они могут быть разрешены только во время выполнения, и вы получите нулевую помощь компилятора или IDE при написании кода.
Если вы объявили объект Worksheet
:
Dim ws As Worksheet
... и присвоил его ActiveSheet
:
Set ws = ActiveSheet
..., затем попытался вызвать его AutoFilter
свойство :
ws.AutoFilter
. ..вы быстро заметите, что что-то не так: Worksheet.AutoFilter
это не метод , а свойство (и Nothing
, если фильтрация отключена). Вы хотите использовать метод Range.AutoFilter
.
Работа с Selection
будет работать, но будет иметь такие же поздние ограничения, как и работа с ActiveSheet
.
Работайте с Range
вместо - CurrentRegion
просто так!
ws.Range("A1").CurrentRegion.AutoFilter
А теперь, когда вы набираете Пробел после этого членавызов, вы получите параметр quick-info , показывающий, что это за параметры - обратите внимание, что Field
и Criteroa1
являются соответственно первым и вторым параметрами в подписи члена - это означает, что именованные аргументыфактически избыточные / имена параметров и операторы :=
могут быть опущены, а значения передаются нормально:
ws.Range("A1").CurrentRegion.AutoFilter 3, "blanks"
ws.Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:="blanks" '<~ exactly equivalent to the above