Это моя первая публикация здесь, и я новичок в VBA.
Как упоминалось в заголовке, я хочу отменить выбор одного элемента для нескольких (в этом примере двух) фильтров нескольких сводных таблиц (которые все на одном листе), которые добавляются в модель данных. Данные сводной таблицы добавляются в модель данных, поэтому значения могут быть установлены для различных счетчиков (что невозможно без добавления данных в модель данных).
Причина, по которой я хочу отменить выбор одного элемента, на самом деле является обходным путем для того, что я действительно хочу. Я добавляю данные к исходным данным (динамический c именованный диапазон) и обновляю sh сводные таблицы. Но поскольку к сводной таблице применены фильтры, новые добавленные элементы не будут выбираться автоматически. Итак, вы можете подумать, почему бы не использовать опцию «Включить новые элементы в ручной фильтр»? Поскольку данные сводной таблицы добавляются в модель данных, этот параметр неактивен (поэтому его нельзя выбрать).
Поэтому я пытаюсь написать некоторый код, чтобы сначала выбрать все элементы (так, чтобы вновь добавленные элементы добавлялись в ручной фильтр), а затем отменить выбор элементов, которые мне не нужны (потому что я заранее знаю, какие элементы чтобы отменить выбор, поскольку они уже находятся в первом наборе данных).
Я попытался использовать записанный макрос, но, по-видимому, когда элементы в ручном фильтре отменяются, он записывает выбранные элементы, которые остаются.
Поскольку данные сводной таблицы добавляются к данным модель код написан иначе. Решения, которые я нашел, применимы только для «обычных» сводных таблиц.
Найдите ниже код, который я пытался использовать. Как указано в коде, первая часть работает, только вторая часть - нет. Также я не знаю, правильно ли использовать свойство «HiddenItemsList».
Sub DataModel_PivotTable_FilterFields()
'works - will select all the items in the manual filter
Worksheets("xxx").PivotTables("PivotTable3").PivotFields( _
"[xyx].[xxy].[xxy]").VisibleItemsList = Array("")
'does not work - should deselect the item "zxx" after this part works I will add the other item
'to be deselected in the array if possible
Worksheets("xxx").PivotTables("PivotTable3").PivotFields( _
"[xyx].[xxy].[xxy]").HiddenItemsList = Array( _
"[xyx].[xxy].&[zxx]")
End Sub
Может кто-нибудь попытаться мне с этим помочь? Был бы очень признателен.