データを更新したあとに、グラフを最新状態に反映する「再描画(リフレッシュ)」処理は、業務で非常に重要です。
特に 日次・週次データの追加、売上ログ、システム出力の転記 など、定期的にデータが増える Excel では、グラフを手作業で修正するのは手間がかかります。
本記事では、VBAで「グラフ更新マクロ」を組み込み、ワンクリックで自動的にグラフを最新化する仕組みを解説します。
目次
1. グラフの再描画処理(Refresh / Repaint)の基本
Excel のグラフは、データ範囲に変更があっても
「グラフの元データを更新して再描画」
しなければ反映されません。
再描画の基本は、以下の 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. ボタンからワンクリックで再描画する
● 設置手順
- 開発タブ → 挿入 → フォームコントロール「ボタン」
- シートに配置
- マクロ「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が有効
コメント