仅在过滤切片器时清除切片器缓存

时间:2015-10-10 21:05:22

标签: excel excel-vba vba

我有一个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属性不可用,我是。

是否有办法绕过这个或其他技术来识别被过滤的切片器?

0 个答案:

没有答案