Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » GroupItems・GroupShapesとは

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2104 ビルド13929.20386 Microsoft Store)

「vba GroupShapes GroupItems オブジェクト」
という検索キーワードでアクセスがありました。

Excel VBAの、GroupItemsプロパティとGroupShapesコレクションについて調べていた方による検索でしょうか。

[スポンサードリンク]

Excel VBAのGroupItems・GroupShapesとは

Excel VBAのGroupItemsは、(オブジェクトブラウザーで検索すればわかるとおり)図形を表すShapeオブジェクトまたはShapeRangeオブジェクトに用意されているプロパティで、

いずれも、グループ化されている個々の図形(Shapeオブジェクト)を要素として含むGroupShapesコレクションが戻り値です。

グループ化された図形を確認するサンプル

サンプルマクロもご紹介しておきましょう。
アクティブなワークシートに、グループ化された図形を作成しておいてから、以下のSubプロシージャを実行してみてください。

Sub グループ化された図形を確認する()
 Dim shp As Shape
 For Each shp In ActiveSheet.Shapes
  If shp.Type = msoGroup Then

   shp.Select
   Application.ScreenUpdating = True
   MsgBox shp.Name

   Dim shp_child As Shape
   For Each shp_child In shp.GroupItems
    shp_child.Select
    Application.ScreenUpdating = True
    MsgBox shp_child.Name
   Next shp_child

  End If
 Next shp
End Sub

アクティブシート上の全図形に対してFor Each~Nextループを回して、
  Dim shp As Shape
  For Each shp In ActiveSheet.Shapes

グループ化された図形だったときに、
   If shp.Type = msoGroup Then

その図形が選択され、
   shp.Select

図形の名前がメッセージボックスに表示されます。
   MsgBox shp.Name

途中に入っている、
   Application.ScreenUpdating = True
は、以前のExcelならば不要だった処理で、最近はVBAで選択した状態をExcel側ですぐに目視確認できないときがあるので、画面を更新するために入れています。

つづく処理が、
「vba GroupShapes GroupItems オブジェクト」
と検索なさった方に、しっかり確認していただきたい部分です。

グループ化された図形を表すShapeオブジェクトのGroupItemsプロパティで取得したグループ化された個々の図形に対してFor Each~Nextループを回して、
   Dim shp_child As Shape
   For Each shp_child In shp.GroupItems

図形を選択して名前を表示しています。
    shp_child.Select
    Application.ScreenUpdating = True
    MsgBox shp_child.Name

内側のFor Each文
   For Each shp_child In shp.GroupItems
で使っている「.GroupItem」がShapeオブジェクトのGroupItemプロパティで、実行されるとGroupShapesコレクションが返されることを強く意識しましょう。

最終更新日時:2021-05-26 16:02

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » GroupItems・GroupShapesとは

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.