PowerPoint VBA(Visual Basic for Applications)のSlideRangeオブジェクト・SlideRangeプロパティについて解説をしました。
ExcelのVBAの経験がある方に向けては、ちょっと補足をしておく必要があります。
Selectionについての補足です。
ExcelのSelectionプロパティは、何を返すか決まっていない
Excel VBAにもSelectionというプロパティがあります。
例えば、セルを1つだけ選択しておいてから、
MsgBox Selection.Value
というコードを実行すると、そのセルに入力されている値がメッセージボックスに表示されます。
ところが、図形を選択しておいてから、同じ
MsgBox Selection.Value
というコードを実行すると、図形にはValueプロパティがないために、エラーとなります。
これは、Excel VBAのSelectionプロパティは、何が選択されているかによって、返すオブジェクトが違うため発生する現象です。
オブジェクトブラウザで確認すると、SelectionプロパティはObjectを返すと、
表示されています。
PowerPointのSelectionプロパティは、必ずSelectionオブジェクトを返す
これに対して、PowerPoint VBAのSelectionプロパティは、必ず、Selectionオブジェクトを返します。
オブジェクトブラウザで確認すると、SelectionプロパティはSelectionを返すと、
表示されています。
Excel VBAでSelectionを使い慣れている方がPowerPoint VBAのSelectionを使おうとした場合、PowerPointのSelectionプロパティが、必ず、Selectionオブジェクトを返すという部分は、注意すべきポイントの一つです。
Selectionプロパティは、DocumentWindowオブジェクトのメンバーで、グローバルメンバーではない
ExcelのSelectionプロパティは、Applicationオブジェクトのメンバーですから、使える場面がかなり多いはずです。
また、上図のようにグローバルメンバーでもあるので、
Application.Selection
と書かずにいきなり
Selection
と書くことができてしまいます。
しかし、PowerPointのSelectionプロパティは、DocumentWindowオブジェクトのメンバーです。
より重要なのは、グローバルのメンバーではないことです。
DocumentWindowオブジェクトを取得してから使う必要がありますから、必ず
上位のオブジェクト式.Selection.プロパティ/メソッド
と書かなければなりません。
Excel VBAでいきなり
Selection.プロパティ/メソッド
と書き始めることに慣れている方は、この
上位のオブジェクト式.Selection
と書かなければならない点は、戸惑うところでしょう。
なお、実際にPowerPointのマクロを作る場合、もちろんどんなマクロを作るかによりますが、
ActiveWindow.Selection.プロパティ/メソッド
というコードを書くことが多いでしょう。
同じ「Selection」という名前のプロパティですが、以上のようにPowerPointとExcelでは違う部分があるので、特にExcel VBAのSelectionに慣れている方が、PowerPoint VBAを使おうとしたときに戸惑いやすい、注意すべきポイントだと感じています。
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAとExcel VBAのSelectionの違い