Lesson14(タイマー)
それではいつもの様にVBEを立ち上げて新規ユーザーフォームを挿入して
下さい。今回はタイマーを勉強しましょう。VBAの兄貴分のVB(ビジュアル
ベーシック)にはタイマーというコントロールがあります。これは実に便利な
もので、ある一定時間後に処理を行うコントロールです。ところがVBAには
タイマーコントロールがありません。そこでVBAでタイマーと同じ処理をする
にはどうすれば良いかというのが今回のレッスンです。まずは、コントロールをユーザーフォームに貼り付けましょう。コマンドボタン
とイメージを貼り付けて下さい。スライドショーを作ってみましょう。コマンド
ボタンのキャプションには「スライドショー」と書き換えて下さい。
コードはこの様になります。
レッスン6から使っている画像を1秒間隔で次々と表示させます。最初のForステート
メントでは、繰り返し変数iに相当する画像名c:\My Documents\obi0.gif
c:\My Documents\obi1.gif
c:\My Documents\obi2.gif
c:\My Documents\obi3.gif
c:\My Documents\obi4.gifを次々呼び出して、イメージコントロールにロードさせます。これだけですと
VBAはこのプロシージャを全て終わってからでないと、イメージコントロール
への表示処理をしない仕様になっていますので、最後の画像obi4.gifを表示する
だけです。そこでタイマーを挿入します。Dtimerというプロシージャーがこれに
当たります。Dtimerプロシージャーの中を見て下さい。Timer関数を使用しています。
Timer関数は深夜0時から何秒経ったかを示す関数です。だから午前10時ちょうど
のTimerの値は36000です。まずt0に現在の値を代入します。Do While Timer < t0 + 1 '1秒経過するまで
DoEvents 'プログラムを中断
Loop次にこれは Do While ~ Loop ステートメントと呼ばれるもので、
Do While 条件
処理
Loopという形が一般的です。「条件」が成立している間は「処理」を行うという
ステートメントです。ここではTimerがt0+1秒より小さい間に「DoEvents関数」
を行うことになります。Timerは現在の時刻を表しますから、先ほどt0を設定
したときから1秒経過しているかどうかを判定しているということになります。DoEvents関数は、CPUの割り当てをオペレーティングシステム(Windows95や98)
に渡す関数です。これにより、プロシージャの実行中であっても、イメージ
コントロールに画像を表示する処理が行われます。1秒後にはサブルーチン
プロシージャに戻って次の画像をロードする処理を行うということになります。ちょっと説明が難しくなりましたが、何でも質問して下さいね(^^;
では実行してみましょう。マイドキュメントの5枚の画像が次々と表示されましたか?
![]()
ご意見・ご感想は