簡體   English   中英

運行時錯誤1004-宏更新數據透視表

[英]Run-Time Error 1004 - Macro to update pivot table

我正在嘗試使用宏更新數據透視表,因為數據每個月都添加到表的底部(更新以將數據包括到最后一行)。

Option Explicit

Sub Pivot()

Dim shConD As Worksheet
Dim shPvtTbl As Worksheet
Dim lr As Long
Dim rng As Range

Set shConD = ActiveWorkbook.Sheets("Consolidated_Data")
Set shPvtTbl = ActiveWorkbook.Sheets("PivotTables")

lr = shConD.Range("A" & Rows.Count).End(xlUp).Row
Set rng = shConD.Range("A1:F" & lr)

With shPvtTbl.PivotTables(3).PivotCache
     .SourceData = rng.Address(True, True, xlR1C1, True) 'Error appears here
     .Refresh
End With

End Sub

.SourceData行上,我遇到運行時錯誤1004,應用程序定義的錯誤或對象定義的錯誤。 遵循此線程的邏輯,並繼續進行聊天 在此先感謝大家。

嘗試以下代碼(代碼注釋內的解釋):

Option Explicit

Sub Pivot()

Dim shConD As Worksheet
Dim shPvtTbl As Worksheet
Dim lr As Long
Dim rng As Range

' Added PivotTable variables
Dim PvtTbl As PivotTable
Dim PvtCache As PivotCache

Set shConD = ActiveWorkbook.Sheets("Consolidated_Data")
Set shPvtTbl = ActiveWorkbook.Sheets("PivotTables")

lr = shConD.Range("A" & shConD.Rows.Count).End(xlUp).Row
Set rng = shConD.Range("A1:F" & lr)

' set/update the PivotCache (with latest rng modifications
Set PvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rng.Address(False, False, xlA1, xlExternal))
' for DEBUG Only
Debug.Print PvtCache.SourceData

' set the PivotTable object
Set PvtTbl = shPvtTbl.PivotTables(3)
' for DEBUG Only
Debug.Print PvtTbl.Name

' refresh the PivotTable with the updated PivotCache
PvtTbl.ChangePivotCache PvtCache
PvtTbl.RefreshTable

End Sub

如果您使用的是Excel 2007或更高版本,則完成此操作的最簡單方法是確保數據透視表源數據是Excel表(aka ListObject),並在“更改數據透視表數據源”中使用表名,如下所示。

從那時起,借助表的魔力,每當您向表中添加新數據時,它將自動擴展。 而且,每當刷新數據透視表時,它將始終自動獲取該新數據。 無需再次更改數據透視表數據源。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM