VBA для установки автофильтра и фильтрации выбранных столбцов - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь применить автофильтр ко всем данным, а затем отфильтровать все ячейки, кроме «Пробелы» в столбце C. Он выбирает все данные на листе для первой строки, но затем выдает ошибку времени выполнения - «Именовано»аргумент не найден '.

Selection.CurrentRegion.Select

ActiveSheet.AutoFilter Field:=3, Criteria1:="blanks"

Я бы хотел, чтобы лист для автофильтра и столбец фильтра C отображал только пробелы.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Опять неявные поздние связывающие удары! 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 являются соответственно первым и вторым параметрами в подписи члена - это означает, что именованные аргументыфактически избыточные / имена параметров и операторы := могут быть опущены, а значения передаются нормально:

yay intellisense!

ws.Range("A1").CurrentRegion.AutoFilter 3, "blanks"
ws.Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:="blanks" '<~ exactly equivalent to the above
0 голосов
/ 24 октября 2019
Rows("1:1").AutoFilter field:=3, Criteria1:=""
...