【问题标题】:VBA - Pivot table refresh 1004 application not defined errorVBA - 数据透视表刷新 1004 应用程序未定义错误
【发布时间】:2018-05-15 14:00:15
【问题描述】:

当我尝试运行宏来更新 pviot 时,我收到一个对象定义错误 1004。我希望数据透视表和图表每天更新,因此它始终显示过去 30 天

'pivot filter refresh

Dim DateToday As Date
DateToday = Date
Dim PvtTbl As PivotTable
Set PvtTbl = Worksheets("Sheet1").PivotTables("Pivot1")

PvtTbl.PivotFields("DateAdded").PivotFilters. _
    Add2 Type:=xlDateBetween, Value1:=DateToday - 30, Value2:=DateToday

【问题讨论】:

  • 如果您手动执行此操作并记录宏会发生什么。最后一行的语法有什么不同吗(除了变量的差异)?
  • 我确实是手动录制的。我改变的只是枢轴过滤器的 Value1 和 Value2。最初我有默认的 Activesheet.Pivottable... 语法,我得到了错误。所以我定义了对象,我认为这会解决它,但它没有
  • 这一切看起来都是正确的。你在哪一行得到错误?
  • 最后 2 行 ----- PvtTbl.PivotFields("DateAdded").PivotFilters。 _ Add2 Type:=xlDateBetween, Value1:=DateToday - 30, Value2:=DateToday

标签: excel pivot-table vba


【解决方案1】:

我能够使用我自己的数据透视表之一重现您的问题。解决方案是在尝试应用新过滤器之前,从那个特定的数据透视字段ClearAllFilters

可能需要的一项额外检查(此处未显示)是检查以确保您正在过滤的字段在过滤之前实际上是可见的。

Option Explicit

Sub test()
    Dim dateToday As Date
    dateToday = Date
    Dim pvtTbl As PivotTable
    Set pvtTbl = Staffing.PivotTables(1)

    Dim ptField As PivotField
    Set ptField = pvtTbl.PivotFields("FiscalMonth")

    ptField.ClearAllFilters
    ptField.PivotFilters.Add2 Type:=xlDateBetween, _
                              Value1:=dateToday - 30, _
                              Value2:=dateToday

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多