エクセルやVBAでは、図形やオートシェイプなどのオブジェクトをグループ化することが多いものです。
さて、このとき、グループ化したオブジェクトのグループ名はどのように取得したり設定したりすればよいのかという質問がよく届きます。
今回は、グループ化した図形やオートシェイプなどのオブジェクトのグループ名を取得・設定する方法について徹底的に説明していきます。
グループ化したオブジェクト(図形)のグループ名の取得・設定方法
グループ名を取得する記述方法
構文: Msgbox グループ化したオブジェクト. Name
グループ化したオブジェクトのグループ名は、Nameプロパティで取得します。
グループ名は、基本的に「Group 1」などの「Group 数字」で表されます。
数字部分は、ワークシート上でグループ化した順序に増加していきます。
つまり、グループ化したオブジェクトのグループ名を取得後、いったんグループ化を解除し、その後に再度同じ図形をグループ化してグループ名を取得すると、グループ名の数字が1つ増加します。
上の図でグループ名「Group 9」を取得していますが、グループ化をいったん解除し、再度同じ図形をグループ化してからグループ名を取得すると、「Group 10」と表示されます。
したがって、グループ化をするタイミングによりグループ名が異なることになりますので注意が必要です。
グループ名を取得するサンプルコード
グループ名を取得するためのサンプルコードは以下のようになります。
サンプルコード:
Sub 全図形をグループ化した後グループ名取得()
ActiveSheet.Shapes.SelectAll '図形をすべて選択する
Selection.Group.Select '選択した図形をグループ化する
MsgBox Selection.Name 'グループ名を表示する
End Sub
上記サンプルコードでは、あらかじめ図形を選択しておく必要はありません。
シート上にある図形をすべて自動的に選択し、グループ化します。
グループ名を取得し、メッセージボックスで表示します。
実行結果:
もし、あらかじめクリックして選択した図形だけをグループ化したい場合は以下のサンプルコードになります。
サンプルコード:
Sub あらかじめクリック選択した図形をグループ化した後グループ名取得()
Selection.Group.Select '選択した図形をグループ化する
MsgBox Selection.Name 'グループ名を表示する
End Sub
グループ名を設定する記述方法
構文: グループ化したオブジェクト. Name = “設定したいグループ名”
グループ化したオブジェクトにNameプロパティを使うことで任意のグループ名を設定することができます。グループ名を設定しておけば、後でグループ化したオブジェクトを操作するときに便利になります。
グループ名を設定するサンプルコード
グループ名を設定するためのサンプルコードは以下のようになります。
サンプルコード:
Sub 全図形をグループ化した後グループ名を設定()
ActiveSheet.Shapes.SelectAll '図形をすべて選択する
Selection.Group.Name = "Group X" '選択した図形をグループ化し、グループ名を「Group X」に設定
ActiveSheet.Shapes("Group X").Select 'グループ名を表示するため、グループを選択
MsgBox Selection.Name 'グループ名を表示する
End Sub
実行結果:
もし、あらかじめクリックして選択した図形だけをグループ化し、グループ名を設定したい場合は以下のサンプルコードになります。
サンプルコード:
Sub あらかじめクリック選択した図形をグループ化した後グループ名を設定()
Selection.Group.Name = "Group X" '選択した図形をグループ化し、グループ名を「Group X」に設定
ActiveSheet.Shapes("Group X").Select 'グループ名を表示するため、グループを選択
MsgBox Selection.Name 'グループ名を表示する
End Sub
【まとめ】グループ化したオブジェクト(図形)のグループ名の取得・設定方法
グループ化した図形のグループ名を取得するには、Nameプロパティを使い、メッセージボックスでグループ名を表示させることできます。
グループ名を設定するには、Nameプロパティで任意のグループ名を設定することができます。
図形やオートシェイプのグループ化は使う機会が多いですので、ぜひ覚えておいてくださいね。
参考:写真・画像整列VBA
コメント