選択された複数の図形の中の各図形の属性を取得するには?

Question 88.1   Previous Next
簡単な内容で申し訳ありませんが、
数十個ほどのある図形とテキストボックスのうち、図形1個とテキストボックス2~4個を事前に [shift]+[クリック}で選択しておき、それぞれの位置とか図形やテキストボックスの情報を ShapesRange などで取り込みたい。

あるエリアの図形選択とかはありますが、
事前にクリックしておいたものだけの情報をとる方法が分かりませんか?
Shapeの中で途中にあったり、Shapeの順番どおりではなく飛んで指定したいので、何か良い Shapeの指定方法があれば、ご教授ください。
Answer   Copyright (C) 2008.5.2 永井善王
「事前にクリックしておいたもの」は、Selectionプロパティで取得できます。

たとえば右図のような状態で、
MsgBox TypeName(Selection)
を実行すると、「DrawingObjects」と返ります。
DrawingObjects とは、すべての描画オブジェクトの旧称ですが現在は Shapesコレクションとなりますから、たとえば、
MsgBox Selection.ShapeRange.Count
とすれば、「3」が返ります。
「情報をとる方法」ということですが、選択されている各図形の属性 (プロパティ) 等を取得したい ということでよければ、
MsgBox Selection.ShapeRange(3).Name
のようにすれば、「Text Box 5」のように返ります。
プロパティは Name の他に、Width、Heightとか多数あります。

左図にある「左上端セル」の値は TopLeftCellプロパティで取得したもので、オブジェクトの左上端がD3セルにあるという意味です。
そして、左端距離の「198.75」は列Aの左端からオブジェクトの左端までの距離を表しています。
回答は以上で終わりですが、あなたの問題解決の参考になるでしょうか?

【関連ページ】
 ・
選択された複数の図形の中の各図形の属性を表示する
 ・選択された複数の図形の前景色を設定する
 ・選択されたテキストボックスのテキストを表示する

 

Excel VBA Macro