Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Shapesのインデックス番号は固定ではなく基本的にはZOrderPositionと同じ

Shapesのインデックス番号は固定ではなく基本的にはZOrderPositionと同じ

動作検証バージョン:Windows版Excel(バージョン1901 ビルド11231.20130)

Shapesコレクションの、Itemメソッドや_Defaultメソッドの引数にインデックス番号を指定することで、

Shapesのインデックス番号はZOrderPositionと同じ

個々の図形を表す、単独のShapeオブジェクトを取得できます。

このインデックス番号は固定ではなく、重なり順(前面・背面)を変更すると変化し、

Shapesのインデックス番号はZOrderPositionと同じ

(グループ化された図形がなければ)ShapeオブジェクトのZOrderPositionプロパティが返す値と一致します。

このことをご存じないと思われる記述を見かけたので、記事にさせていただきます。

Shapesのインデックス番号は基本的にはZOrderPositionと一致する

Shape.ZOrderPositionのヘルプには、以下のように書かれています。

A shape's position in the z-order corresponds to the shape's index number in the Shapes collection. (重ね順での図形の位置は Shapes コレクションの図形のインデックス番号に対応します。)

Shapesのインデックス番号はZOrderPositionと同じ

Shapesのインデックス番号がZOrderPositionと一致することを確認するサンプル

以下のSubプロシージャを実行すると、アクティブシート上の最背面に配置されている図形から順番に、前面に配置されている図形が選択され、インデックス番号とZOrderPositionプロパティの返す値がメッセージボックスに表示されます。

Sub Shapesのインデックス番号とZOrderPositionが一致することを確認する()
 With ActiveSheet.Shapes
  Dim i As Long
  For i = 1 To .Count
   .Item(i).Select
   Application.ScreenUpdating = True
   MsgBox _
     i & vbCrLf & _
     .Item(i).ZOrderPosition
  Next i
 End With
End Sub

アクティブシート上の図形の重なり順を変更して、何度か実行してみてください。

ただし、グループ化された図形が存在する場合には、インデックス番号とZOrderPositionは一致しなくなります

最終更新日時:2021-12-22 13:16

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Shapesのインデックス番号は固定ではなく基本的にはZOrderPositionと同じ

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

検索


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

.