PowerPointでのVBA使用2/ユーザーフォームの利用
こんにちは、ロック204チャンネルです。
今回は「PowerPointでのVBA使用2 ユーザーフォームの利用」についてお送りします。
この資料では、PowerPoint VBAを用いてユーザーフォームを利用したスライドショーの自動・手動切替機能の実装方法を解説しています。
今回のプログラムの概要について説明します。
具体的には、ユーザーフォームを使用してスライドの切り替え時間を制御するプログラムを作成します。
ユーザーフォームには、「手動切替」と「自動切替」のオプションと、スライド切り替え時間(秒)を調整するスライドバーがあり任意の時間で時間を選択できるようプログラムします。
最初に、ユーザーフォームの作成手順を説明します。
VBEを開き、「挿入」メニューから「ユーザーフォーム」を選択します。
ユーザーフォームを追加すると、プロジェクトウインドウのフォームの下にフォーム名が表示されます。
こちらが、UserForm1に追加したコントロールの配置を示しています。
具体的には、手動切り替えに「OptionButton1」、自動切り替えに「OptionButton2」、右上のラベルとして「Label1」、切り替え時間を表示するラベルとして「KirikaeJikan」、スクロールバーとして「ScrollBar1」、フォームを閉じるとき使用するコマンドボタンとして「Tojiru」を図のように配置しました。
こちらのコードは、UserForm1に記述するものです。
1-3行目は、スクロールバーの値が変更された際に、ラベル「KirikaeJikan」のキャプションにスクロールバーの値を代入します。
4-6行目は、「閉じる」ボタン(Tojiru)がクリックされた際に、フォームを非表示にします。
標準モジュールのコード「Sub AutoSlideShow()」の冒頭部分を解説しています。
ここでは、変数の宣言を行っています。
1行目は、プロシージャ「AutoSlideShow」の開始を宣言しています。
2行目は、スライド番号を扱う整数型の変数「slideIndex」を宣言しています。
3行目は、スライドの枚数を扱う整数型の変数「slideCount」を宣言しています。
4行目は、スライドの表示時間を扱う倍精度浮動小数点型の変数「delay」を宣言しています。
5行目は、次のスライドを表示するまでの時間を扱う倍精度浮動小数点型の変数「endTime」を宣言しています。
6行目は、スライドショーウィンドウを扱う「SlideShowWindow」型の変数「slideShow」を宣言しています。
8行目は、後述しますが、スライドショーの実行方法を決定するためにユーザーフォームを使用します。ユーザーフォームを扱う「Object」型の変数「UserForm」を宣言しています。
9行目は、「if」文の判定に使用するブール型の変数「bf」を宣言しています。
標準モジュールのコード「Sub AutoSlideShow()」の続きを解説しています。
ここでは、スライドショーの設定とユーザーフォームからの入力に基づく処理の分岐を行っています。
11行目は、スライドショーを開始します。
13から14行目は、設定フォーム(UserForm1)を表示します。
16から22行目は、ユーザーフォームのオプションボタン「OptionButton1」の値によって処理を分岐します。
18から19行目は、OptionButton1の値がTrueの場合(手動切替)、 メッセージボックスに「手動切替です。」と表示して処理を終了します。
21行目は、OptionButton1の値がFalseの場合(自動切替)、 メッセージボックスに「自動切替です。」と表示して次の処理に進みます。
23行目は、スライドの切り替え時間(秒)を変数「delay」に格納します。
24行目は、if文の終わりを示します。
標準モジュールのコード「Sub AutoSlideShow()」の最後の部分を解説しています。
ここでは、スライドショーの実行とスライドの切り替え、そして指定時間待機処理を行っています。
26行目は、スライドの総数を取得し、変数「slideCount」に格納します。
28行目は、スライドショーウィンドウを取得し、変数「slideShow」に格納します。
29-34行目は、指定したスライドに移動し、設定した時間だけ待機する処理を、スライドの総数分繰り返します。
29行目は、スライドの番号を1から「slideCount」まで順に変えながら処理を繰り返します。
31行目は、指定したスライド番号のスライドに移動します。
33行目は、変数「delay」に格納された時間(秒)だけ処理を待機します。
34行目は、次のスライドの番号に移動します。
35行目は、プロシージャの終了を宣言しています。
標準モジュールのコード「Sub Wait()」について解説しています。
このコードは、引数として渡された秒数だけ処理を待機する機能を持っています。
1-2行目は、プロシージャ「Wait」の開始を宣言し、待機時間を扱う倍精度浮動小数点型の変数「seconds」と、終了時間を扱う倍精度浮動小数点型の変数「endTime」を宣言しています。
3行目は、終了時間を計算し、変数「endTime」に格納します。
4-6行目は、タイマーが終了時間になるまで待機するループ処理を実装しています。
4行目は、タイマーが終了時間よりも小さい間、ループ処理を繰り返します。
5行目は、他のイベント処理を実行できるようにします。
6行目は、ループの開始位置に戻ります。
7行目は、プロシージャの終了を宣言しています。
操作画面とコードの説明動画
この記事が気に入ったらサポートをしてみませんか?