みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方をお伝えしています。
前回の記事はコチラです。
「選択した部分」を表すSelectionオブジェクトについてお伝えしました。
そのSelectionオブジェクトですが、PowerPointの場合「選択した部分」にはいくつかの種類がありましたね。
今回は、その各種類について紐解いていきましょう。
では、PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!をお伝えします。
では、行ってみましょう!
前回のおさらい
前回は以下のようなソースコードを作りました。
Sub 選択している部分を取得する()
Debug.Print ActiveWindow.Selection.Parent.Caption
End Sub
アクティブなウィンドウの選択した部分を取得するコートですね。
さらに、その取得したSelectionオブジェクトの親オブジェクト(=アクティブなウィンドウ)のタイトルバーテキストをデバッグプリントするという遠回しな確認をするものでした。
まあ、良しとしましょう。
「選択」の4つのパターン
さて、そのSelectionオブジェクトは、取得した際の状態に応じて4つのパターンがあります。
各パターンについて一つずつ紹介していきますね。
スライドを選択している状態
まず、以下のようにスライドが選択されている状態です。
このパターンでは選択できるスライドの数は1以上になります。
シェイプを選択している状態
次に、1つ以上のシェイプを選択してみましょう。
すると、以下のようにスライドの選択は1つに限定されます。
つまり、シェイプが選択されているときは、1つのスライドと1つ以上のシェイプが選択されいる状態になります。
テキスト範囲を選択している状態
続けて、いずれかのシェイプについて編集モードにして、テキスト範囲を選択してみます。
すると、以下のように、複数のシェイプの選択状態は解除されて、1つのシェイプのみが選択されます。
つまり、この場合、1つのスライドと1つのシェイプとテキスト範囲が選択されている状態になります。
何も選択されていない状態
あとは、以下のように、どのオブジェクトも選択されていない状態というのも存在しえます。
「選択の部分」つまりSelectionオブジェクトには上記のように、4つのパターンがあります。
Selectionオブジェクトのタイプを取得する
Selectionオブジェクトについて、以上の4つのパターンのどの状態なのかを知ることができるプロパティがあります。
以下のTypeプロパティです。
Typeプロパティで取得できるのは以下のppSelectionType列挙で定義されている定数で表される4つの数値です。
ppSelectionType | 値 | スライド | シェイプ | テキスト |
---|---|---|---|---|
ppSelectionNone | 0 | – | – | – |
ppSelectionSlides | 1 | 1つ以上 | – | – |
ppSelectionShapes | 2 | 1つ | 1つ以上 | – |
ppSelectionText | 3 | 1つ | 1つ | テキスト範囲 |
例えば、以下のようなコードを作ってみました。
Sub 選択状態を調べる()
With ActiveWindow.Selection
If .Type = ppSelectionNone Then Debug.Print "何も選択されていません"
If .Type >= ppSelectionSlides Then Debug.Print "スライドが選択されています"
If .Type >= ppSelectionShapes Then Debug.Print "シェイプが選択されています"
If .Type >= ppSelectionText Then Debug.Print "テキスト範囲が選択されています"
End With
End Sub
例えば、Typeプロパティが1以上であるときは、少なくとも1つ以上のSlideオブジェクトが選択されていますので、「スライドが選択されています」と出力されます。
Typeプロパティが3のときは、1以上であり、2以上でもあり、3以上でもありますから、「何も選択されていません」以外のメッセージが全て出力されます。
以降の記事でお伝えしていきますが、Selectionの状態によってできる処理が異なりますので、Typeプロパティによる分岐処理を入れるというのはスタンダードなテクニックになります。
まとめ
以上、PowerPoint VBAのSelectionオブジェクトの4つのタイプを知る、Typeプロパティの使い方についてお伝えしました。
Selectionオブジェクトは「選択している部分」の状態も含めて保持しています。その状態を知り、必要に応じて分岐処理を行うためにTypeプロパティを使うのです。
次回、いよいよSelectionオブジェクトからオブジェクトを取得していきましょう。
どうぞお楽しみに!
連載目次:初心者向けPowerPoint VBAで選択箇所を操作する
PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。- PowerPoint VBAでアクティブなウィンドウを取得する方法
- PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
- PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
- PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
- PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
- PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
- PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
- PowerPoint VBAでフォームボタンからマクロを実行する方法