目次
概要
複数のグラフを手作業で並べ替えると、毎回位置や大きさがずれてしまいがちです。VBA で ChartObjects コレクションを走査し、基準となる 1 枚目のグラフと同じ左位置・幅・高さにそろえ、下方向へ等間隔で配置すれば、資料のレイアウトを瞬時に統一できます。本記事では、その基本マクロと動作を丁寧に解説いたします。
サンプルコード
Sub ArrangeCharts()
Dim ws As Worksheet ' 操作対象シート
Dim baseChart As ChartObject ' 基準となるグラフ
Dim idx As Long ' ループ用カウンター
Dim marginPx As Long ' グラフ間隔(ピクセル)
Set ws = ThisWorkbook.Worksheets("Metrics") ' 任意のシート名
Set baseChart = ws.ChartObjects(1) ' 最上段のグラフを基準に設定
marginPx = 15 ' 上下の余白
For idx = 1 To ws.ChartObjects.Count
With ws.ChartObjects(idx)
.Left = baseChart.Left
.Width = baseChart.Width
.Height = baseChart.Height
.Top = baseChart.Top + _
(baseChart.Height + marginPx) * (idx - 1)
End With
Next idx
End Sub
コード解説
行 | 処理内容 | 着目点 |
---|---|---|
3 | 変数 ws を宣言 | 操作対象シートを変数化して再利用性を向上します。 |
4 | baseChart を宣言 | 1 枚目のサイズをテンプレートにします。 |
9 | シートを取得 | シート名は自由に変更可能です。 |
10 | 基準グラフを取得 | コレクションの 1 番目を採用していますが、任意指定も可能です。 |
11 | 余白を設定 | marginPx を変更すれば間隔を簡単に調整できます。 |
13 | ループ開始 | グラフの総数分だけ繰り返します。 |
14-19 | 位置と大きさを統一 | Left Width Height で揃え、Top だけ計算でずらします。 |
まとめ
本マクロを利用すると、複数のグラフをわずか数秒で整列でき、資料作成の見栄えと作業効率が大幅に向上いたします。余白や基準グラフを変えることで、プレゼン資料やダッシュボードのレイアウトを柔軟に調整できますので、ぜひご活用ください。