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. まとめ
グラフの配置とサイズ変更は、Top, Left, Width, Height の4つを理解すれば自由自在です。
| 項目 | プロパティ | 説明 |
|---|---|---|
| 上位置 | .Top | シート上部からの距離 |
| 左位置 | .Left | シート左端からの距離 |
| 幅 | .Width | グラフの横幅 |
| 高さ | .Height | グラフの縦の長さ |
VBAでグラフの見た目を整えることで、
自動生成される資料でも整った・見やすいグラフを簡単に作成できます。
コメント