Отмените выбор одного элемента с помощью VBA в сводной таблице, которая добавляется в модель данных - PullRequest
0 голосов
/ 18 июня 2020

Это моя первая публикация здесь, и я новичок в 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

Может кто-нибудь попытаться мне с этим помочь? Был бы очень признателен.

1 Ответ

0 голосов
/ 25 июня 2020

Если кому интересно, я нашел решение с помощью слайсеров. Код, который я использовал, был взят из ответа IG2013 . Просто измените Dim i As Long на Dim i As String, если значение среза является строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...