2016-04-17 150 views
1

尊敬的Stackoverflow用户,EXCEL 2013 VBA过滤问题

我有困难,看起来很简单,不会造成这么大的麻烦。我试图根据以下代码中提到的大于等于条件筛选数据透视表。下面是代码:

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”: 无效的过程调用或参数

请协助。

谢谢

回答

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