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... вы получите тот же результат.