2017-03-10 10 views
1

をリフレッシュ私はピボットを更新するには、ボタンの中に埋め込まれているこの非常に単純なコードを実行しようとしています:あなたが見ることができます下の写真ではVBAランタイム1004「参照有効ではありません」 - ピボットはマクロ

Sub Button5_Click() 
    ThisWorkbook.Worksheets("DD").PivotTables("test").PivotCache.REFRESH 
End Sub 

を私が取り組んでいるワークシート、そしてピボットの名前。

正しいものを指すコードがあるように見えるので、なぜこのエラーが発生するのか理解できません。私はThisWorkbookを使わずに試してみました。

ワークブック写真

enter image description here

+0

ブック全体にどのように多くのピボットテーブルですか?名前が受け入れられていないかどうかを確認するために汎用ピボットテーブル(1)でテストしましたか? – Cyril

+0

エラーのスクリーンショットも表示できますか?それは "ソート参照が有効ではありませんか?"この場合はここを見てください - http://stackoverflow.com/questions/15296400/1004-the-sort-reference-is-not-valid – Vityata

+0

エラーは単に "参照が有効ではありません"です。 – Kevbo

答えて

0

「DD」のワークシートにPivotTables("test")のデータを更新するためには、まずPivotTableが、それはからのデータです取得範囲での更新とPivotCacheを更新する必要があります。その後、テーブルRefreshに。私は(このコードを実行するだけのために)PivotCacheためRange定義するには、以下の行を使用しました

Set PvtDataRng = Worksheets("PivotDataSheet").Range("A1:E100") 

があなたのデータを合わせてシートの名前とneedee範囲を変更します。

コード

Option Explicit 

Sub Button5_Click() 

Dim PvtTbl     As PivotTable 
Dim PvtCache    As PivotCache 
Dim PvtDataRng    As Range 

' Set/Update Pivot Data Range 
Set PvtDataRng = Worksheets("PivotDataSheet").Range("A1:E100") ' <-- just an example 

' Create/Update Pivot Cache 
Set PvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, PvtDataRng) 

' Set the Pivot Table (already created, otherwise need to create it) 
Set PvtTbl = Worksheets("DD").PivotTables("test") 

' refresh the Pivot Table with the latest Pivot Cache 
With PvtTbl 
    .ChangePivotCache PvtCache 
    .RefreshTable 
End With 

End Sub 
+0

恐ろしい!これはうまくいった! – Kevbo

+0

フォローアップ - このコードに2番目のピボットテーブルを追加するにはどうすればよいですか?ボタンをリフレッシュしたいテーブルが2つあります – Kevbo

関連する問題