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枚の画像が次々と表示されましたか?

次へ進む


Since 15/06/1999ご意見・ご感想はご感想お待ちしております。具体的なご質問は会議室にお願いします。