我有一个Excel VBA宏来将切片器设置为由用户确定的特定值。但是,在执行此操作之前,我想清除之前的所有选择。目前我只是使用:
For Each cache In ActiveWorkbook.SlicerCaches
cache.ClearManualFilter
Next cache
但是这非常慢,所以我只想清除过滤器实际上是否过滤过滤器。到目前为止,我有:
Dim cache As SlicerCache
Dim RefreshNeeded As Boolean
RefreshNeeded = False
For Each cache In ActiveWorkbook.SlicerCaches
For i = 1 To cache.SlicerCacheLevels.Count
If cache.SlicerCacheLevels(i).SlicerItems.Count <> cache.SlicerCacheLevels(i).VisibleSlicerItems.Count Then
RefreshNeeded = True
End If
Next i
If RefreshNeeded = True Then
cache.ClearManualFilter
End If
RefreshNeeded = False
Next cache
这会导致运行时错误。
暂时用数字替换cache.SlicerCacheLevels(i).VisibleSlicerItems.Count
,我发现这就是问题所在。 Microsoft support声明使用多维数据集时.VisibleSlicerItems
属性不可用,我是。
是否有办法绕过这个或其他技术来识别被过滤的切片器?