PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!


selection-type

photo credit: Andrew_Writer P1150772 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方をお伝えしています。

前回の記事はコチラです。

PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
PowerPoint VBAで選択したオブジェクトについてフォントを変更するマクロの作り方を紹介していきます。今回は選択した部分を表すSelectionオブジェクトとその取得方法についてお伝えします。

「選択した部分」を表す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つのスライドと1つのシェイプとテキスト範囲が選択されている状態
つまり、この場合、1つのスライドと1つのシェイプとテキスト範囲が選択されている状態になります。

何も選択されていない状態

あとは、以下のように、どのオブジェクトも選択されていない状態というのも存在しえます。

何も選択されていない状態

「選択の部分」つまりSelectionオブジェクトには上記のように、4つのパターンがあります。

Selectionオブジェクトのタイプを取得する

Selectionオブジェクトについて、以上の4つのパターンのどの状態なのかを知ることができるプロパティがあります。

以下のTypeプロパティです。

Selectionオブジェクト.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で選択しているスライドを操作するSlideRangeオブジェクト
PowerPoint VBAで選択している部分を操作するマクロの作り方をお伝えしています。今回は、選択しているスライド範囲を操作するSlideRangeオブジェクトとその使い方について紹介していきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAで選択箇所を操作する

PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。
  1. PowerPoint VBAでアクティブなウィンドウを取得する方法
  2. PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
  3. PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
  4. PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
  5. PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
  6. PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
  7. PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
  8. PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
  9. PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
  10. PowerPoint VBAでフォームボタンからマクロを実行する方法

タイトルとURLをコピーしました