Excelで図形を使って資料や画面を作っていると、こんな悩みはありませんか?
- 複数の図形をまとめて動かしたい
- 位置調整が面倒
- グループ化・解除を何度も手作業でやっている
このような場合は、VBAで図形のグループ化・解除を自動化するのがおすすめです。
一度コードを書いておけば、複数図形を簡単にまとめて管理できるようになります。
この記事でできること
- 複数の図形をグループ化できる
- グループを解除できる
- 特定の図形だけまとめる
- 図形管理を効率化できる
図形をグループ化する基本コード
まずは、選択している図形をグループ化するコードです。
Option Explicit
Sub GroupShapes()
If TypeName(Selection) = "DrawingObjects" Then
Selection.ShapeRange.Group
MsgBox "図形をグループ化しました。", vbInformation
Else
MsgBox "図形を選択してください。", vbExclamation
End If
End Sub
複数の図形を選択した状態で実行すると、1つのグループになります。
図形のグループを解除するコード
Option Explicit
Sub UngroupShapes()
If TypeName(Selection) = "DrawingObjects" Then
Selection.ShapeRange.Ungroup
MsgBox "グループを解除しました。", vbInformation
Else
MsgBox "図形を選択してください。", vbExclamation
End If
End Sub
特定の図形を指定してグループ化する
名前を指定してグループ化する方法です。
Option Explicit
Sub GroupSpecificShapes()
Dim shpArray As Variant
shpArray = Array("Rectangle 1", "Oval 2", "Arrow 3")
ActiveSheet.Shapes.Range(shpArray).Group
MsgBox "指定した図形をグループ化しました。", vbInformation
End Sub
図形名を指定することで、任意の図形だけをまとめることができます。
グループ図形を解除する(名前指定)
Option Explicit
Sub UngroupByName()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Group 1")
shp.Ungroup
MsgBox "グループを解除しました。", vbInformation
End Sub
グループ化のメリット
- 複数図形をまとめて移動できる
- サイズ変更が一括でできる
- レイアウト調整が簡単になる
- UI作成が楽になる
実務での活用例
- ダッシュボードのボタンまとめ
- フローチャートのブロック管理
- 入力フォームのパーツ管理
- 説明図のレイアウト整理
特にUIを作る場合は、グループ化は必須テクニックです。
よくあるエラーと対処法
① 図形が選択されていない
Selection.ShapeRangeを使うため、図形を選択してから実行してください。
② 図形名が違う
名前指定する場合は正確に指定する必要があります。
Sub CheckShapeNames()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
Debug.Print shp.Name
Next shp
End Sub
③ グループ名が分からない
グループ化すると通常「Group 1」などの名前になります。
まとめ
- 図形はVBAでグループ化できる
- Group / Ungroupで操作可能
- 名前指定で柔軟に制御できる
- UI作成・レイアウト整理に必須
図形のグループ化を使いこなすと、Excelでの画面作成が一気に楽になります。
特にダッシュボードや操作画面を作る際には、ぜひ活用してみてください。

コメント