2017-08-01 168 views
0

我試圖更新數據透視表使用宏,因爲數據被添加到每個月的表底部(更新以包括數據到最後一行)。運行時錯誤1004-宏來更新數據透視表

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應用程序定義或對象定義的錯誤。遵循此thread和繼續chat的邏輯。先謝謝你們。

+0

你真的需要vba代碼嗎?如果數據源始終相同,則只需記錄刷新宏並將其設置爲按鈕即可。 –

回答

0

如果您使用Excel 2007或更高版本,那麼最簡單的方法來完成,這是確保您的數據透視表的源數據是Excel表(也稱爲ListObject),並使用更改數據透視表數據源中的表名稱,如下所示。

感謝表中的魔力,從這一刻開始,無論何時向表中添加新數據,它都會自動擴展。而且,無論何時刷新數據透視表,它都會自動提取新數據。將不需要再次更改數據透視表數據源。

enter image description here

+0

這麼多年的卓越......不知道這個基本概念。感謝一百萬的朋友! – KoderM16

0

嘗試下面的代碼(代碼的註釋中說明):

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 
+0

在第二行到最後一行「PvtTbl.ChangePivotCache」中,會出現以下錯誤:運行時錯誤5 - 無效的過程調用或參數。謝謝你的幫助。 – KoderM16

+0

@ KoderM16你確定你有3個'PivotTables'?這段代碼適用於我,嘗試代碼(我已經添加了一個'Debug'部分) –

+0

是的,我確實有3.我在那裏嘗試了數字1到10,沒有運氣。完全相同的錯誤。數據透視表被過濾,因爲我使用它們的圖形在單獨的工作表上創建了儀表板。這可能導致這個問題嗎? – KoderM16