ブックにピボットテーブルが2つあり、データソースを動的に変更してピボットテーブルを更新する次のコードがあります。最初のFor Each pt
ループをループしてコードが正常に実行され、最初のピボットテーブルがリフレッシュされます。それは第二ピボットテーブルのためにループしたときただし、コードがエラーでpt.ChangePitvotCache
でクラッシュ:実行時エラー '5':無効なポシジョン呼び出しまたは引数
Run-time error = '5': invalid procedure call or argument"
いできるだけ早く私は以上1 Pivot-を持っているように、これは動作しない理由に助けることができる誰もコードのテーブル?
Dim ws As Worksheet
Dim pvtCache As PivotCache
Dim pt As PivotTable
Dim newRange As String
Set DataSource = DataSht.Range("A1", DataSht.Range("A1").End(xlToRight).End(xlDown))
newRange = DataSht.Name & "!" & DataSource.Address(ReferenceStyle:=xlR1C1)
Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=newRange)
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ChangePivotCache pvtCache
pt.RefreshTable
Next pt
Next ws
あなたの提案はうまくいっていますが、2番目のPTが最初のピボットキャッシュとピボットキャッシュを共有していない場合にのみ役立ちます。私は今、新しいシートにクローン化されたPTを追加しました。コードは最初のFor Each pt In ws.PivotTablesループでそのエラーを返します... – Mike
実際には、このケースでも同様に動作し、以前はset pvtCacheを削除しましたループ? –
ループの前にpvtCacheを削除しても、同じエラーが発生しました。私は少し問題を絞り込むことができました。クローンピボット可能に接続されたスライサーがある場合にのみ問題が発生するようです。 – Mike