#043 一定時間待つ方法(タイマ時イベントを使った方法) フォーム、VBA

VBAの一連のコードの中で、処理と処理との間で一定時間待機する方法をご紹介します。ここではフォームの[タイマ時]イベントを使ってそれを実現する方法を示します。

まず、指定時間経過したかどうかを表すフラグとして、次の変数を宣言します。これは一定時間待機するコードを含むプロシージャと[タイマ時]イベントプロシージャで共有する変数ですので、フォームまたは標準モジュールの"Declarations"セクションに宣言して、どちらのプロシージャからも参照できるようにします。
Private pblnTimePasted As Boolean

   ※標準モジュールに記述する場合には "Private" は付けません。

続いて、一定時間待機するコードを含むプロシージャと、[タイマ時]イベントプロシージャを、フォームのモジュールに次のように記述します。
Private Sub cmdProc_Click()

 '****************************************************
 'ここで何かの処理を実行します
 '****************************************************

  '指定時間経過したかどうかのフラグを"未経過"の状態にセットします
  pblnTimePasted = False

  'フォームの[タイマ間隔]プロパティに待ち時間をセットします
  'ここでは1/1000秒の単位で、1.5秒を設定します
  Me.TimerInterval = 1500

  '指定時間経過したかどうかのフラグが"経過"状態になるまでループで待ちます
  Do Until pblnTimePasted
    'ループ内では DoEvents関数 によって制御をWindowsに渡さないと[タイマ時]イベントが発生しません
    DoEvents
  Loop

  'フォームの[タイマ間隔]プロパティをリセットして以降タイマ時イベントが発生しないようにします
  Me.TimerInterval = 0

 '****************************************************
 'ここで次の処理を実行します
 '****************************************************

End Sub


Private Sub Form_Timer()
  '指定時間経過したかどうかのフラグを"経過"状態にします
  pblnTimePasted = True

End Sub
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved