首页 > 解决方案 > 刷新数据透视表的 VBA 应用程序定义或对象定义错误

问题描述

您好,我在 excel 中记录了一个宏来刷新我想要选择的这些数据透视表,但是当我尝试运行宏时,它给了我这个错误“应用程序定义的或对象定义的错误”。我不确定为什么它会像我所做的那样工作,只是点击记录宏,刷新了我想要的表并使用它来刷新指定的表。

Sub Refresh()
'
' Refresh Macro
'

'
    Sheets("F-Pivots").Select
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
    Sheets("P-Pivots").Select
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
    Sheets("F-Y-Reject P.").Select
    ActiveSheet.PivotTables("PivotTable3").PivotCache.Refresh
    Sheets("P-Y-Reject P.").Select
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
    Sheets("F-Y-DT P.").Select
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
    Sheets("P-Y-DT P.").Select
    ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
    ActiveWindow.ScrollWorkbookTabs Sheets:=1
    ActiveWindow.ScrollWorkbookTabs Sheets:=1
    Sheets("Monthly Data").Select
    ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
    Range("B4").Select
    ActiveSheet.PivotTables("PivotTable100").PivotCache.Refresh
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1
    Sheets("Heatmap").Select
End Sub 


标签: excelvbapivot-table

解决方案


我意识到一些数据透视表具有相同的名称并且位于不同的工作表中,所以我认为有问题。

以下代码Pivot Tables按其名称引用并刷新其缓存。所有使用它们的表都应刷新缓存(源数据)。

代码: 编辑:在数据透视表上使用刷新表方法

Public Sub Refresh()

    Range("PivotTable1").PivotTable.RefreshTable
    Range("PivotTable2").PivotTable.RefreshTable
    Range("PivotTable3").PivotTable.RefreshTable
    Range("PivotTable100").PivotTable.RefreshTable

    ThisWorkbook.Worksheets("Heatmap").Activate

End Sub

让我知道它是否有效


推荐阅读