Home » エクセルマクロ・Excel VBAの使い方 » 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は一致しなくなります。

最終更新日時:2019-02-21 11:59

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

「Shapeオブジェクト」の記事一覧

検索


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

.