Excelで図形を使ってボタンやレイアウトを作成していると、次のようなことはありませんか?
- 図形のサイズがバラバラで見た目が悪い
- 同じ大きさに揃えるのが手作業で面倒
- 整列してもサイズが違って違和感がある
このような場合は、VBAで図形サイズを一括で統一するのがおすすめです。
この記事では、複数の図形を同じサイズに揃えるマクロを初心者向けに解説します。
この記事でできること
- 複数の図形を同じサイズに揃える
- 選択した図形のみサイズ変更
- 特定のサイズに統一する
- 見た目の整ったUIを作成できる
完成コード①:選択した図形を同じサイズにする
まずは、選択している図形をすべて同じサイズに揃える基本コードです。
Option Explicit
Sub ResizeShapesSameSize()
Dim shp As Shape
Dim baseWidth As Double
Dim baseHeight As Double
If Selection.ShapeRange.Count = 0 Then
MsgBox "図形を選択してください。", vbExclamation
Exit Sub
End If
' 最初の図形のサイズを基準にする
baseWidth = Selection.ShapeRange(1).Width
baseHeight = Selection.ShapeRange(1).Height
For Each shp In Selection.ShapeRange
shp.Width = baseWidth
shp.Height = baseHeight
Next shp
MsgBox "図形サイズを統一しました。", vbInformation
End Sub
コードの意味を解説
Selection.ShapeRangeとは?
現在選択している図形の集合を取得します。
複数図形をまとめて処理する際に使います。
基準サイズの考え方
最初に選択されている図形のサイズを基準にしています。
baseWidth = Selection.ShapeRange(1).Width
完成コード②:指定サイズに揃える
任意のサイズに統一したい場合はこちらです。
Option Explicit
Sub ResizeShapesFixedSize()
Dim shp As Shape
Dim targetWidth As Double
Dim targetHeight As Double
targetWidth = 120
targetHeight = 50
If Selection.ShapeRange.Count = 0 Then Exit Sub
For Each shp In Selection.ShapeRange
shp.Width = targetWidth
shp.Height = targetHeight
Next shp
End Sub
実行手順(初心者向け)
- Excelで複数の図形を作成する
- Ctrlキーを押しながら図形を複数選択
- Alt + F11でVBAエディタを開く
- 挿入 → 標準モジュール
- コードを貼り付ける
- マクロを実行する
応用①:幅だけ揃える
高さはそのままで、横幅だけ揃えることもできます。
For Each shp In Selection.ShapeRange
shp.Width = 150
Next shp
応用②:高さだけ揃える
For Each shp In Selection.ShapeRange
shp.Height = 60
Next shp
応用③:シート上のすべての図形を統一
Sub ResizeAllShapes()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.Width = 120
shp.Height = 50
Next shp
End Sub
※不要な図形まで変更されるので注意してください。
実務での活用例
- ダッシュボードのボタンサイズ統一
- メニュー画面の見た目調整
- フローチャートの図形サイズ統一
- 資料作成時のレイアウト整理
よくあるエラーと対処法
① 図形が選択されていない
Selection.ShapeRangeを使うため、事前に図形を選択してください。
② 図形以外を選択している
セルなどが混ざるとエラーになります。
③ 図形サイズが変わらない
シート保護が有効になっている可能性があります。
まとめ
- 図形サイズはVBAで一括変更できる
- Selection.ShapeRangeで複数図形を操作できる
- 基準サイズ or 固定サイズで統一可能
- UIや資料作成で非常に便利
図形サイズを統一することで、Excelの見た目が一気に整います。
特にボタンUIやダッシュボード作成では必須テクニックなので、ぜひ活用してみてください。

コメント