目次
はじめに
定期レポートを作成する際、グラフを毎回ドラッグで整列させると手間がかかります。VBA の ChartObjects プロパティとセル座標を組み合わせれば、位置と大きさを一括で揃えられます。本記事では、セル範囲にフィットさせる基本コードと要点を解説いたします。
サンプルコード
Sub ResizeChartToRange()
Dim ws As Worksheet ' 操作対象シート
Dim layoutArea As Range ' グラフの配置先セル範囲
Dim chartObj As ChartObject ' 対象グラフ
' 1. シートとセル範囲を指定
Set ws = ThisWorkbook.Worksheets("Dashboard") ' 任意のシート名
Set layoutArea = ws.Range("E3:J18") ' 見出しを含む想定範囲
' 2. グラフを取得し、位置とサイズをセル範囲に合わせる
Set chartObj = ws.ChartObjects("PerformanceChart") ' 作成時に命名しておく
With chartObj
.Top = layoutArea.Top
.Left = layoutArea.Left
.Width = layoutArea.Width
.Height = layoutArea.Height
End With
End Sub
コード解説
手順 | 説明 | 重要ポイント |
---|---|---|
1 | シートとセル範囲を取得 | Range("E3:J18") を変更すれば他の場所にも流用できます。 |
2 | グラフを取得し配置 | ChartObjects("PerformanceChart") で識別するため、生成時に分かりやすい名前を付けておくと保守性が向上します。 |
応用アイデア
- 行数が増減する場合は、
CurrentRegion
やCells(Rows.Count, 列番号).End(xlUp).Row
を利用してセル範囲を自動拡張すると便利です。 - 複数のグラフがある場合は、配列やコレクションでグラフ名を管理し、ループで位置・サイズを一括調整できます。
まとめ
Top、Left、Width、Height プロパティをセル範囲に合わせて設定することで、グラフの配置を自動化できます。シート名・セル範囲・グラフ名を変数で管理すれば再利用性が高まり、資料更新の手間を大幅に削減できます。定例レポートやダッシュボード作成の効率化に、ぜひ本サンプルをお役立てください。