EXCEL 2013 VBA过滤问题

时间:2016-04-17 09:54:48

标签: vba excel-vba excel

亲爱的Stackoverflow用户,

我遇到一些似乎很简单但不会造成这么多麻烦的事情。我试图基于大于等于下面的代码中提到的标准来过滤数据透视表。这是代码:

Sub KEEP_ON_FILE_DT_CLICK()
    Dim caches As Excel.SlicerCaches
    Set cache = ActiveWorkbook.SlicerCaches("Slicer_KEEP_ON_FILE_DT")
    With cache
        For i = 1 To .SlicerItems.Count
            If .SlicerItems(i).Selected Then
                SelectedItem = .SlicerItems(i).Value
                Exit For
            End If
        Next i
    End With
    ActiveSheet.PivotTables("PivotTable2").PivotFields("KEEP_ON_FILE_DT"). _
    ClearAllFilters
    ActiveSheet.PivotTables("PivotTable2").PivotFields("KEEP_ON_FILE_DT"). _
    PivotFilters.Add Type:=xlValueIsGreaterThanOrEqualTo, Value1:=SelectedItem
End Sub

由于某种原因,我实际应用过滤器的最后一行不断给出以下错误消息:

运行时错误' 5': 无效的过程调用或参数

请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

我假设您的数据透视表不允许应用任何此类过滤器。枢轴表有许多不同的方式/类型,并不是所有这些都允许使用xlValueIsGreaterThanOrEqualTo这样的过滤器。

然而,以下代码应该适用于所有情况:

Dim itmList As PivotItem
Dim dblDesiredValue as Long

dblDesiredValue = 32

ActiveSheet.PivotTables("PivotTable2").PivotFields("KEEP_ON_FILE_DT").EnableMultiplePageItems = True        
For Each itmList In ActiveSheet.PivotTables("PivotTable2").PivotFields("KEEP_ON_FILE_DT").PivotItems
    Select Case CDbl(itmList.Name)
    Case Is >= dblDesiredValue 
        itmList.Visible = True
    Case Else
        itmList.Visible = False
    End Select
Next itmList