Excel VBA 逆引き集 | ピボットの自動更新

Excel VBA
スポンサーリンク

「ピボットの自動更新」を どのタイミングで動かすか を整理。代表的な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
  • ポイント
    • 更新タイミングをユーザーが選べるので、処理が重い場合に便利。
    • 「更新ボタン」を作っておけば誰でも簡単に最新化できる。

まとめ

  • データ入力直後: 自動で即更新(ただし重くなる可能性あり)
  • ブックを開いたとき: 開いた瞬間に最新化(更新忘れ防止)
  • ボタンを押したとき: ユーザーが必要なときだけ更新(軽快に運用)

👉 実際の運用では「開いたときに更新」+「ボタンで任意更新」の組み合わせが一番使いやすいことが多いです。

タイトルとURLをコピーしました