运行时错误“ 424”对象所需的筛选器数据透视表

时间:2019-07-03 09:58:17

标签: excel vba pivot-table

我正在寻找在O2和O3中所述的2个日期之间筛选数据透视表的方法,似乎无法摆脱此错误。任何帮助将不胜感激。

Sub MyFilter()

Dim pvtfld As PivotField
Dim pvtfil As PivotFilter
Dim pvtfils As PivotFilters

Set pvtfld = ThisWorkbook.Sheets("Sheet1").PivotTables("PivotTable1").PivotFields("Date")

For Each pvtfil In pvtfld.PivotFilters

Next pvtfil

Set pvtfil = pvtfils.Add(xlDateBetween, Date, O2, O3, xlDescending)

End Sub

错误如下。

  

错误424所需的对象出现在设置的pvtfil行中。

1 个答案:

答案 0 :(得分:0)

枢轴的日期过滤器需要两个String,Excel可以将其解释为日期值(在我的德语Excel版本中,不能直接分配Date值和Range对象!)

因此,我使用了两个日期变量“ o2”和“ o3”

  • Range.Value阅读
  • 通过CDate转换为日期(如果您已经在单元格中使用了日期值,则没有必要)
  • 通过CStr转换为字符串

Sub MyFilter()
    Dim pvtfld As PivotField
    Dim pvtfil As PivotFilter

    Dim o2 As Date
    Dim o3 As Date

    With ThisWorkbook.Sheets("Sheet1")
        Set pvtfld = .PivotTables("PivotTable1").PivotFields("Date")
        o2 = CDate(.Range("O2").Value) ' just to ensure, they are dates
        o3 = CDate(.Range("O3").Value)
        Debug.Print CStr(o2), CStr(o3)
        pvtfld.ClearAllFilters
        Set pvtfil = pvtfld.PivotFilters.Add2(Type:=xlDateBetween, Value1:=CStr(o2), Value2:=CStr(o3), Order:=xlDescending)
    End With
End Sub