「excel vba 選択されたオブジェクトがGroupobjectか判定」
という検索キーワードに気付きました。
Excel VBAで選択されている描画オブジェクト(図形)が、グループ化されているかどうかを判定するには、どうすればいいのかを探していらしたのでしょう。
Shape.Type等がmsoGroupのときにグループ化されている
図形がグループ化されているかどうかは、ShapeオブジェクトやShapeRangeオブジェクトのTypeプロパティで判定できます。グループ化されているときにShapeやShapeRangeのTypeプロパティが、
Office.MsoShapeType列挙に定義されている定数msoGroupを返すかを調べることで、
グループ化された図形かどうかを判定できます。
選択図形がグループ化されているかを判定するサンプルマクロ
選択図形がグループ化されているかを判定するには、以下のSubプロシージャが参考になるでしょう。
On Error GoTo ErrHndl
Select Case Selection.ShapeRange.Type
Case msoGroup
MsgBox "グループ化されています。"
Case msoShapeTypeMixed
MsgBox "図形を1つだけ選択して実行してください。"
Case Else
MsgBox "グループ化されていません。"
End Select
ErrHndl:
MsgBox "図形を選択してから実行してください。"
End Sub
サンプルマクロで行っている処理
Excel VBAのSelectionプロパティは、図形が選択されているときにはOvalやRectangleなどの、レガシーな固有のオブジェクトを返します。そこで「Selection.ShapeRange」というオブジェクト式で、ShapeRangeオブジェクトを取得しています。
取得したShapeRangeオブジェクトのTypeプロパティを調べて、
Select Case Selection.ShapeRange.Type
msoGroupだったときにグループ化されている旨のメッセージを表示しています。
Case msoGroup
MsgBox "グループ化されています。"
ただし、複数の図形が選択されていたときにShapeRange.TypeはmsoShapeTypeMixedを返しますので、
図形を1つだけ選択して実行するよう促すメッセージを表示しています。
Case msoShapeTypeMixed
MsgBox "図形を1つだけ選択して実行してください。"
また、そもそも図形が選択されていないときに「Selection.ShapeRange.Type」が実行されるとエラーが発生しますから、
On Error GoTo ErrHndl
ErrHndl:
MsgBox "図形を選択してから実行してください。"
とエラートラップを行っています。
最終更新日時:2019-08-07 14:51
- Newer:Range.Nextプロパティとは
- Older:Excel VBAのResize(2, 1).Mergeとは
Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » VBAで選択図形がグループ化されているかどうか判定する