【VBA】グラフの配置とサイズを変更する方法|Top・Left・Width・Heightの基本

Excel VBAでグラフを作成すると、
「もっと右に寄せたい」「サイズをそろえたい」と感じることがあります。

VBAでは、**Top(上位置)・Left(左位置)・Width(横幅)・Height(高さ)**の4つのプロパティを使うことで、
グラフの位置とサイズを自由にコントロールできます。

この記事では、初心者にもわかりやすく、基本構文から実用的な使い方まで詳しく解説します。


1. グラフの位置とサイズを指定する基本構文

グラフの配置と大きさは、ChartObject のプロパティを使って設定します。

With ChartObject
    .Top = 50      '上からの距離(ポイント単位)
    .Left = 20     '左からの距離(ポイント単位)
    .Width = 400   '横幅(ポイント)
    .Height = 300  '高さ(ポイント)
End With
プロパティ意味単位
.Topシート上端からの距離ポイント(約0.35mm)
.Left左端からの距離ポイント(約0.35mm)
.Widthグラフの幅ポイント
.Heightグラフの高さポイント

2. 実際に位置とサイズを変更するサンプルコード

Sub SetChartPositionAndSize()

    Dim ws As Worksheet
    Dim co As ChartObject

    Set ws = ActiveSheet
    Set co = ws.ChartObjects(1) '1つ目のグラフを指定

    With co
        .Top = 40       '上から40ポイント
        .Left = 30      '左から30ポイント
        .Width = 350    '幅を350ポイントに設定
        .Height = 250   '高さを250ポイントに設定
    End With
End Sub

このコードを実行すると、
シート上の1つ目のグラフの位置とサイズが指定通りに変更されます。


3. セル位置を基準に配置する方法

固定の数値ではなく、セルの位置に合わせて配置したい場合は、
Range("セル").Top や Range("セル").Left を使います。

With co
    .Top = ws.Range("B5").Top
    .Left = ws.Range("B5").Left
    .Width = 350
    .Height = 250
End With

このように指定すると、
グラフの左上が セルB5の位置にぴったり合います。

セル基準で配置すれば、他の要素と整列させやすく、
レポート用シートや自動生成資料でも見た目が崩れにくくなります。


4. 複数のグラフをそろえて配置・サイズ統一する方法

複数のグラフを扱う場合、同じサイズ・同じ間隔で整列させると見やすくなります。
For Each文を使えば、一括で整形できます。

Sub ArrangeCharts()

    Dim ws As Worksheet
    Dim co As ChartObject
    Dim leftPos As Double
    Dim topPos As Double

    Set ws = ActiveSheet
    leftPos = 20
    topPos = 40

    For Each co In ws.ChartObjects
        With co
            .Top = topPos
            .Left = leftPos
            .Width = 350
            .Height = 250
        End With
        leftPos = leftPos + 380 '次のグラフを右にずらす
    Next co

End Sub

このコードでは、
すべてのグラフが横一列にきれいに並びます。


5. 単位とレイアウト調整のコツ

  • Excel VBAで使われる単位はポイント(pt)
     → 1ポイント ≒ 0.35mm
  • 印刷や画面解像度によって、若干のズレが出ることがあります
  • グラフをセル基準で配置すると、解像度や印刷設定に影響されにくいためおすすめです

6. よくあるミスと注意点

問題原因対処法
グラフが見えない位置に移動した.Top や .Left の値が大きすぎる値を100~300程度に修正
すべてのグラフのサイズがバラバラループ処理が抜けているFor Each co In ws.ChartObjects を使う
セル位置に揃わない絶対座標で指定している.Top = Range("A1").Top のようにセル基準を使用

7. まとめ

グラフの配置とサイズ変更は、
TopLeftWidthHeight の4つを理解すれば自由自在です。

項目プロパティ説明
上位置.Topシート上部からの距離
左位置.Leftシート左端からの距離
.Widthグラフの横幅
高さ.Heightグラフの縦の長さ

VBAでグラフの見た目を整えることで、
自動生成される資料でも整った・見やすいグラフを簡単に作成できます。

コメント

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