Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAとExcel VBAのSelectionの違い

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

PowerPoint VBAとExcel VBAのSelectionの違い

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 VBAとExcel VBAのSelectionの違い

表示されています。

PowerPointのSelectionプロパティは、必ずSelectionオブジェクトを返す

これに対して、PowerPoint VBAのSelectionプロパティは、必ず、Selectionオブジェクトを返します。

オブジェクトブラウザで確認すると、SelectionプロパティはSelectionを返すと、

PowerPoint VBAとExcel VBAのSelectionの違い

表示されています。

Excel VBAでSelectionを使い慣れている方がPowerPoint VBAのSelectionを使おうとした場合、PowerPointのSelectionプロパティが、必ず、Selectionオブジェクトを返すという部分は、注意すべきポイントの一つです。

Selectionプロパティは、DocumentWindowオブジェクトのメンバーで、グローバルメンバーではない

ExcelのSelectionプロパティは、Applicationオブジェクトのメンバーですから、使える場面がかなり多いはずです。

PowerPoint VBAとExcel VBAのSelectionの違い

また、上図のようにグローバルメンバーでもあるので、
 Application.Selection
と書かずにいきなり
 Selection
と書くことができてしまいます。

しかし、PowerPointのSelectionプロパティは、DocumentWindowオブジェクトのメンバーです。

PowerPoint VBAとExcel VBAのSelectionの違い

より重要なのは、グローバルのメンバーではないことです。

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の違い

「パワーポイントマクロ・PowerPoint VBAの使い方」の記事一覧

検索


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

.