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

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

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

Excel VBAの場合もご紹介しておきましょう。

[スポンサードリンク]

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

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


Sub 選択されている図形の個数を取得する()
 On Error GoTo ErrHndl
 MsgBox _
  ActiveWindow.Selection.ShapeRange.Count
 Exit Sub

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

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

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

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

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

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

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

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

どうして同じ名前にしなかったのかはわかりませんけれど、ExcelのWindowオブジェクトのコレクションはWindowsで、

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

最終更新日時:2018-11-21 17:25

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

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

検索


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

.