Есть ли способ проверить макрос, если существует опция фильтра c? - PullRequest
0 голосов
/ 14 июля 2020

Доброе утро,

Я пытаюсь создать макрос, который будет фильтровать данные по месяцу, кварталу или текущему году. У меня есть столбец в моей электронной таблице под названием «MONYR», который включает месяц и год, из которых была взята точка данных. Проблема в том, что у меня не всегда есть данные за каждый месяц. Например, приведенный ниже код продолжает запускать «Ошибка времени выполнения '1004': невозможно получить свойство PivotItems класса PivotField», потому что в поле MONYR нет параметра «Январь-2019», поскольку мне не хватает этих данных. Есть ли способ сделать так, чтобы макрос проверял, существует ли опция «Январь-2019», а если нет, переходить к следующей строке без выдачи ошибки?

With ActiveSheet.PivotTables("PivotTable1").PivotFields("MONYR")

            .PivotItems("Jan-2019").Visible = True
            .PivotItems("Feb-2019").Visible = True
            .PivotItems("Mar-2019").Visible = True
            .PivotItems("Apr-2019").Visible = False
            .PivotItems("May-2019").Visible = False
            .PivotItems("Jun-2019").Visible = False
            .PivotItems("Jul-2019").Visible = False
            .PivotItems("Aug-2019").Visible = False
            .PivotItems("Sep-2019").Visible = False
            .PivotItems("Oct-2019").Visible = False
            .PivotItems("Nov-2019").Visible = False
            .PivotItems("Dec-2019").Visible = False
        
End With

Заранее спасибо !

1 Ответ

0 голосов
/ 14 июля 2020

Один из редких случаев, когда полезно использовать On Error Resume Next - но не забудьте поставить оператор On Error Goto 0.

On Error Resume Next сообщает VBA продолжить выполнение кода даже в случае ошибки происходит. В большинстве случаев это плохо, так как скрывает ошибки (и, следовательно, проблемы с вашим кодом). Но если вы точно знаете, что указанная c строка может вызвать ошибку, и можно продолжить, этот оператор может вам помочь. Но как только эти операторы будут выполнены, вы должны вернуться к поведению по умолчанию.

    On Error Resume Next    ' Skip to next line if pivot entry doesn't exist.
    .PivotItems("Jan-2019").Visible = True
    .PivotItems("Feb-2019").Visible = True
    .PivotItems("Mar-2019").Visible = True
    (...)
    On Error Goto 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...