После полного дня исследования здесь, в разделе «Переполнение стека», msdn, Ozgrid и т. Д. Я, наконец, ушел в отставку и задал свой вопрос здесь.VBA PivotField CurrentPage issue - фильтр работает на «2018», но не «2017»
У меня есть сводная диаграмма, отображающая значения из сводных таблиц. Графики находятся в одном листе, сводные таблицы в другом. На третьем листе у меня есть раскрывающееся меню, позволяющее пользователю выбрать «2017» или «2018». На основании ответа, он фильтрует все сводные таблицы, используя приведенный ниже код:
Worksheets(8).PivotTables("Table1").PivotFields("Year").CurrentPage = year_target
Worksheets(8).PivotTables("Table2").PivotFields("Year").CurrentPage = year_target
Worksheets(8).PivotTables("Table3").PivotFields("Year").CurrentPage = year_target
Теперь, если я выбираю «2018», все сводные таблицы и диаграммы обновления, но если я выбираю «+2017» Я получаю ошибку:
Переменная year_target хорошо обновляется до 2017 и 2018 в зависимости от выбора, и я также пытался использовать жестко заданные значения вместо переменной - снова 2018 работает хорошо, но не 2017. Если я перейду и вручную нажму на «2017» в сводная таблица (т. е. не использующая VBA) работает отлично, и обе сводные таблицы и диаграммы фильтруют, как ожидалось, в 2017 году. Сводные таблицы существуют с именами «Таблица 1» и т. д. Мой c onclusion заключается в том, что проблема находится где-то в функции CurrentPage (?)
У вас есть какие-либо решения? Был бы так благодарен!
Скриншот: 1
EDIT: Через неделю я теперь, наконец, удалось получить это право. Я никогда не нашел причину. Я переформатировал и переименовал все, переместил вокруг сводных таблиц, создал новые и новые диаграммы для каждой сводной таблицы и всего остального, о чем я мог думать, и вдруг это сработало. Моя лучшая догадка заключается в том, что где-то сохранилось какое-то старое форматирование, которое я в моих отчаянных усилиях удалил. Спасибо за Вашу поддержку.
взгляните на мой ответ и код ниже, дайте мне знать, если он работал –
я предлагаю вам записать макрос при изменении года вручную на всех трех Сводные таблицы, а затем просмотрите полученный код, чтобы узнать, что-то выделяется. Возможно, здесь появится полученный здесь код. – jeffreyweir
@jeffreyweir я записал и получил следующий код:.. Sub Macro6() ActiveSheet.PivotTables ("PivotTable5") PivotFields ("Год") CurrentPage = "(Все)" С ActiveSheet.PivotTables ("PivotTable5") .PivotFields ("Год") .PivotItems ("2017"). Visible = False .PivotItems ("2018"). Visible = True End With End Sub Когда я побежал сбросить фильтры и побежал Macro6 Я получил следующую ошибку: Ошибка времени выполнения '1004': Невозможно получить свойство PivotFields класса сводной таблицы – sixty