たくさんのスライドの含まれているプレゼンテーションファイルの編集を行っていると、スライド間の移動が面倒になってきます。
例えば、全部で100枚のスライドが存在しているようなときをイメージしてください。
1枚目のスライドを編集後、50枚目のスライドを編集しようと思ったとき、どうされますか?
先頭や最後に近いスライドならば、[Home]キーや[End]キーで、先頭や最後のスライドにジャンプして、方向キーなどで少し移動すればOKです。
しかし、100枚のスライドの真ん中あたりのスライドを編集しようと思ったときに、そのスライドを選択するだけで、かなり面倒なのです。
それが1回や2回ならば、一旦スライド一覧にしたりするという方法でいいのかもしれませんが、あっちに行ったりこっちに行ったりが頻発するとホント厄介です。
そんなときに使えるマクロを作成してみました。
スライド番号を指定してジャンプするサンプルマクロ
インプットボックスを表示して、インプットボックスにスライド番号を入力すると、その番号のスライドまでジャンプするマクロです。
Dim sld_id As Variant
Dim max_id As Long
sld_id = InputBox("スライド番号を指定してください。")
If sld_id = "" Then Exit Sub
max_id = ActivePresentation.Slides.Count
If Not (IsNumeric(sld_id)) Then sld_id = max_id
If sld_id > max_id Then sld_id = max_id
If sld_id < 1 Then sld_id = 1
End Sub
プレゼンテーションファイルの編集中に上記のマクロを実行すると
「スライド番号を指定してください。」
と表示されたインプットボックスが表示され、指定したスライド番号のスライドがアクティブになります。
番号でスライドにジャンプするマクロでやってること
実際にジャンプする処理、指定されたスライドをアクティブにする処理は、最後の
ActiveWindow.View.GotoSlide Index:=Int(sld_id)
の部分です。
インプットボックスから数値を入力してもらうとなると、いろいろなデータが入力されるケースが考えられるので、そのための事前処理が
ActiveWindow.View.GotoSlide Index:=Int(sld_id)
の前に入っています。
インプットボックスで入力された値を変数・sld_idに格納して、
sld_id = InputBox("スライド番号を指定してください。")
何も入力されていないときやキャンセルされたときはマクロを終了しています。
If sld_id = "" Then Exit Sub
何も入力されなかったときと、[キャンセル]されたときの処理を区別したいのであれば、StrPtr関数を使ってキャンセルかどうかを厳密に判断してください。
スライド番号の最大値より大きな数値を入力されたときや、間違って数値以外の入力が行われたときには、最後のスライドにジャンプする仕様にしました。
そのため、スライドが何枚あるのかを変数・max_idに格納して、
max_id = ActivePresentation.Slides.Count
インプットボックスで入力されたのが数値でないとき、
If Not (IsNumeric(sld_id)) Then sld_id = max_id
インプットボックスで入力された数値が、スライド番号の最大値より大きいときは、
If sld_id > max_id Then sld_id = max_id
変数・sld_idの値を、変数・max_idの値に変更しています。
インプットボックスで入力されたのが1未満の数値だった場合は変数・sld_idを「1」にしています。
If sld_id < 1 Then sld_id = 1
- Newer:マクロ初心者の自分にぴったりだった
- Older:初めてVBAを学ぶにはよいが1日では短い
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » スライド番号を指定してジャンプするPowerPointマクロ