【VBA】グラフを更新するマクロの組み込み(再描画処理)

データを更新したあとに、グラフを最新状態に反映する「再描画(リフレッシュ)」処理は、業務で非常に重要です。
特に 日次・週次データの追加、売上ログ、システム出力の転記 など、定期的にデータが増える Excel では、グラフを手作業で修正するのは手間がかかります。

本記事では、VBAで「グラフ更新マクロ」を組み込み、ワンクリックで自動的にグラフを最新化する仕組みを解説します。


1. グラフの再描画処理(Refresh / Repaint)の基本

Excel のグラフは、データ範囲に変更があっても
「グラフの元データを更新して再描画」
しなければ反映されません。

再描画の基本は、以下の 2 ステップです。

  1. 最新のデータ範囲を取得する
  2. グラフの SeriesCollection に再設定して再描画させる

ここに「ボタンから実行」「イベントから実行」を組み込むことで、運用が効率化します。


2. グラフ再描画マクロの基本構成

以下は、Sheet1 の A列(X軸)・B列(Y軸)のデータに合わせて
グラフ「Chart 1」を更新するマクロです。

Sub RefreshChart()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim chartObj As ChartObject
    Dim rngX As Range
    Dim rngY As Range
    
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
    'A列の最終行取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    '最新のデータ範囲をセット
    Set rngX = ws.Range("A2:A" & lastRow)
    Set rngY = ws.Range("B2:B" & lastRow)
    
    '更新対象のグラフを取得
    Set chartObj = ws.ChartObjects("Chart 1")
    
    'グラフへ最新データを反映
    With chartObj.Chart
        .SeriesCollection(1).XValues = rngX
        .SeriesCollection(1).Values = rngY
        .Refresh 'グラフを再描画
    End With
End Sub

● SeriesCollectionに値を再設定

グラフの元データを「最新の範囲」に差し替える処理。

● .Refresh

グラフに対して「描画し直し」を指示します。


3. ボタンからワンクリックで再描画する

● 設置手順

  1. 開発タブ → 挿入 → フォームコントロール「ボタン」
  2. シートに配置
  3. マクロ「RefreshChart」を割り当て

これで、データを追加 → ボタンを押すだけでグラフが最新化されます。

実務メリット

  • 更新操作が誰でも簡単(Excelに詳しくない人でもOK)
  • 日次更新作業の属人化を防げる
  • 編集ミスのない安定運用が可能

4. 自動更新(Worksheet_Change)と組み合わせる

前記事で解説した、
Worksheet_Change イベント + グラフ更新マクロ
の組み合わせは業務で非常に強力です。

例:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("A:B")) Is Nothing Then Exit Sub
    Call RefreshChart
End Sub

これにより、

  • データ入力 → 自動でグラフが最新化
  • 転記、貼り付け時も即更新

という運用が可能になります。


5. Application.ScreenUpdatingで高速化する

データ量が多い場合、再描画処理に時間がかかることがあります。
その場合は、以下のように高速化します。

Sub RefreshChartFast()
    Application.ScreenUpdating = False '画面更新off
    Call RefreshChart
    Application.ScreenUpdating = True '画面更新on
End Sub

Application.ScreenUpdating

  • True(既定値):処理中も画面が逐次更新される
  • False:処理中の画面更新を止める(描画を抑制)

メリット

  • 大量データ処理やグラフ再描画の際に「ちらつき」や「処理の遅さ」を防げる
  • マクロの実行速度が体感的に速くなる

注意点

  • False のままにすると、処理後も画面が更新されず「何も変わっていないように見える」状態になる
  • 必ず最後に True に戻す必要がある

6. グラフ再描画マクロの活用シーン

  • 日々の売上データを追加
  • 進捗管理のグラフ更新
  • ログデータの貼り付け後に自動可視化
  • センサー値など定期的に伸びていくデータの監視

グラフの再描画を「仕組み化」しておくことで、Excelの自動化・効率化が大幅に進みます。


7. まとめ

  • 再描画処理は「最新範囲取得 → SeriesCollectionに再設定」が基本
  • .Refresh を使ってグラフを再描画
  • ボタン操作やイベントと組み合わせれば運用が安定化
  • 高速化には ScreenUpdating=False が有効

コメント

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