Excel VBAで複数グラフを一括整列するマクロ

目次

概要

複数のグラフを手作業で並べ替えると、毎回位置や大きさがずれてしまいがちです。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 を宣言操作対象シートを変数化して再利用性を向上します。
4baseChart を宣言1 枚目のサイズをテンプレートにします。
9シートを取得シート名は自由に変更可能です。
10基準グラフを取得コレクションの 1 番目を採用していますが、任意指定も可能です。
11余白を設定marginPx を変更すれば間隔を簡単に調整できます。
13ループ開始グラフの総数分だけ繰り返します。
14-19位置と大きさを統一Left Width Height で揃え、Top だけ計算でずらします。

まとめ

本マクロを利用すると、複数のグラフをわずか数秒で整列でき、資料作成の見栄えと作業効率が大幅に向上いたします。余白や基準グラフを変えることで、プレゼン資料やダッシュボードのレイアウトを柔軟に調整できますので、ぜひご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次