「ピボットの自動更新」を どのタイミングで動かすか を整理。代表的な3パターン(データ入力直後/ブックを開いたとき/ボタンを押したとき)のコード例を初心者向けにかみ砕いて説明します。
① データ入力直後に自動更新(イベント連動)
使い方
- データを入力するシートの「コードウィンドウ」に書きます。
- セルが変更されるたびにピボット更新が走ります。
Private Sub Worksheet_Change(ByVal Target As Range)
'このシートでセルが変更されたらピボット更新
Worksheets("ピボット").PivotTables("PivotTable1").PivotCache.Refresh
End Sub
VB- ポイント
Worksheet_Changeは「セルが変わった瞬間」に発火。- 大量データだと毎回更新で重くなるので、必要なら範囲を絞る(例:If Target.Column=3 Then …)。
② ブックを開いたときに自動更新
使い方
- 「ThisWorkbook」モジュールに書きます。
- ファイルを開いた瞬間に全ピボットを更新。
Private Sub Workbook_Open()
Dim ws As Worksheet, pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.PivotCache.Refresh
Next pt
Next ws
End Sub
VB- ポイント
- 全シートのピボットを一括更新。
- 開いた瞬間に最新化されるので「更新忘れ」がなくなる。
③ ボタンを押したときに更新(ユーザー操作)
使い方
- シートに「フォームコントロールボタン」や「図形」を置いて、このマクロを割り当てます。
- ボタンを押すと更新が走る。
Sub RefreshPivotButton()
Dim ws As Worksheet, pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.PivotCache.Refresh
Next pt
Next ws
End Sub
VB- ポイント
- 更新タイミングをユーザーが選べるので、処理が重い場合に便利。
- 「更新ボタン」を作っておけば誰でも簡単に最新化できる。
まとめ
- データ入力直後: 自動で即更新(ただし重くなる可能性あり)
- ブックを開いたとき: 開いた瞬間に最新化(更新忘れ防止)
- ボタンを押したとき: ユーザーが必要なときだけ更新(軽快に運用)
👉 実際の運用では「開いたときに更新」+「ボタンで任意更新」の組み合わせが一番使いやすいことが多いです。
