Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » Excel VBAでShapeRangeの個数を取得する

Excel VBAでShapeRangeの個数を取得する

対象:動作検証バージョン:Windows版Excel(バージョン1810 ビルド11001.20108)

検索キーワード
「.ShapeRange 個数」
「vba shaperange 数を取得」
をキッカケにして、ShapeRangeの個数を取得するPowerPoint VBAのSubプロシージャを公開しています。

Excel VBAの場合をご紹介します。

[スポンサードリンク]

選択図形の数を取得するサンプルマクロ

実は、PowerPoint VBAと、まったく同じSubプロシージャでOKです。

Sub 選択されている図形の個数を取得する()
On Error GoTo ErrHandl

 MsgBox _
  ActiveWindow.Selection.ShapeRange.Count

Exit Sub
ErrHandl:
 MsgBox "図形を選択してから実行してください。"
End Sub

ActiveWindowプロパティを明示することで

オブジェクトブラウザーで確認すればわかるとおり、

Excel.Global.Selection

Excel VBAの場合Selectionプロパティはグローバルメンバーですから、
  ActiveWindow.Selection.ShapeRange.Count
の部分は「ActiveWindow.」を省略して
  Selection.ShapeRange.Count
と書くこともできます。

拙著『いちばんやさしいExcel VBAの教本』の、執筆段階でのレビューで大変お世話になったthomさんのブログ記事「VBA 角丸四角形の角の丸めサイズを統一するマクロ(Excel・PowePoint・Word対応)」で公開されているSubプロシージャAdjustRoundedRectangleでも、ActiveWindowプロパティを明示することで、まったく同じコードがExcelでもPowerPointでもWordでも動くようになっています。

ActiveWindowプロパティが返すオブジェクトの名前は違う

細かい話ですが、ActiveWindowプロパティが返すオブジェクトが、Excel VBAの場合はWindowオブジェクトである点は、一応、違います。

Excel.Global.ActiveWindow

ただ、PowerPointのDocumentWindowオブジェクトと、ExcelのWindowオブジェクトは、いずれもアプリケーションウィンドウを表す、結局は同じようなオブジェクトです。

ExcelのWindowオブジェクトのコレクションはWindowsで、

どうしてもOSとしてのWindowsを想起させてしまうと感じるので、PowerPointのDocumentWindows・DocumentWindowという名前のほうが、適切だと私は思います。

最終更新日時:2021-09-03 16:05

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » Excel VBAでShapeRangeの個数を取得する

「DrawingObjects」の記事一覧

検索


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

.