【ExcelVBA・マクロ】図形のグループ化・解除を自動化するマクロ|複数図形をまとめて管理する方法【コピペOK】

図形のグループ化・解除を自動化するマクロ ExcelVBA

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での画面作成が一気に楽になります。
特にダッシュボードや操作画面を作る際には、ぜひ活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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