VBA, чтобы скрыть SlicerItems

У меня есть слайсер, который содержит элементы из сводной таблицы. Моим пользователям нужна возможность скрывать определенные элементы среза, даже если эти элементы содержат данные. Есть ли способ скрыть элементы слайсера с помощью кода VBA?

1 ответ

Почему бы просто не отфильтровать их? Если это сводная таблица OLAP, см. " Отфильтровать только сводную таблицу" 1 вариант

Если это "традиционная" сводная таблица, то вы можете использовать вариант кода, который я разместил в множественном фильтре сводных полей

Вот некоторый исправленный код:

Sub FilterSlicer_Inverse()
Dim slr As Slicer
Dim sc As SlicerCache
Dim si As SlicerItem
Dim i As Long
Dim vItem As Variant
Dim vSelection As Variant
Dim pt As PivotTable

Set sc = ActiveWorkbook.SlicerCaches("Slicer_test")
vSelection = Array("1", "2") <= List the items you want to hide in here
For Each pt In sc.PivotTables
    pt.ManualUpdate = True 'Stops PivotTable from refreshing after each PivotItem is changed
Next pt

With sc
    .ClearAllFilters
    On Error Resume Next 'In case one of the items isn't found
    For Each vItem In vSelection
        .SlicerItems(vItem).Selected = False
    Next vItem
    On Error GoTo 0
End With

For Each pt In sc.PivotTables
    pt.ManualUpdate = False
Next pt

End Sub

Обратите внимание, что не имеет значения, если вы измените PivotItems или SlicerItems... вы получите тот же результат.

Другие вопросы по тегам