• ベストアンサー

[ EXCEL VBA ] 図形を読み込む順番を制御するには?

お世話になります。 ワークシート上にある全ての図形を読み込む際、下記の場合だと、図形を配置した順番に読み込まれます。 Dim sh as Shape For Each sh in ActiveSheet.Shapes ・・・(省略) Next sh これを、例えば左上に配置しているものから順に読み込む、といったようなことを、EXCEL VBAで実現できるでしょうか? EXCELは2003です。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • diashun
  • ベストアンサー率38% (94/244)
回答No.1

Windows ではドライブ、フォルダ、ファイル、など生成されたオブジェクトには自動的にWindows独自(ユニーク)のID(Indexのようなもの)が付加されます。ExcelやWordでもおなじように生成された順にIDがつけられるので、なにも指定しなければ、VBAなどではそのID順に処理がなされるのではないでしょうか。ご質問のShapesの場合もIDが自動的に付加されているものと思いますが、Shapeごとにその位置情報があります。(Shapes.Top、Shapes.Left)など。これを利用して読み込む順序を制御できるのではないでしょうか。具体的なコードの記述はいまは控えますが・・・。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1のご回答のとおりと思います。 その種の図形(Shapes?)コレクションにAddされた順序で捉えてよいならForEachで捉えられますが、一般には位置とは関係がありません。各図形のLEFT,TOPなどの情報は取れるものの、一旦全図形のそれらの情報を蓄え、ソートして1番、2番を採るとかやれば出来そうですが、左右のほかに上下の2要素もあると、採り上げる順序の理屈付けさえ難しいと思う。 >左上に配置しているものから・・ と簡単に言うが、アルゴリズムはどうなるのかな、結構難しいのでは。高さHeightの大小などがあるとね。 そして位置は不安定(変更可能)なので、変更されたとき、以前のコードが有効かの問題とか、有効な利用が出来るかの問題もあります。出来ればそういうプログラムを作ることは避けて通りたいと、私なら思う。

関連するQ&A