Access DoEvents関数は発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティングシステムに渡す関数
連続したプログラムを実行中に、他のイベントを発生させる関数です。
分かりにくいですが、実際に使用するのは次のような場合です。
ループで処理を行っている場合、ループ中に文字を表示させようとすると表示できません。
ループ処理が終了した時点で、表示されます。
このような場合、ループ中に DoEvents関数を入れると、表示命令が実行されるようになります。
例. この場合、ラベルに表示されません
For i=1 To 500
me!ラベル1.caption=i
処理
next
例. DoEventsを入れると、ラベルに表示され、変化を見ることができます
For i=1 To 500
Me!ラベル1.caption=i
DoEvents
処理
next
■ 構文
DoEvents( )
■ 戻り値
0が返ります
■ Access実行画面
↑ボタンをクリックすると、日付に+1されテキストボックスに表示されます。
↓ボタンをクリックすると、日付に-1されテキストボックスに表示されます。
コマンドボタンは、自動繰り返しプロパティが「はい」に設定されているので、ボタンを押し続けると連続して日付が表示されます。
押し続けた場合、DoEventsがないと日付が変わっていくのが見えません。
従いまして、DoEventsは非常に役に立つ関数になります。
■ Access VBA 実行コード
Option Compare Database
Private Sub DateDisp(n As Integer)
Dim tdate As Date
tdate = Me!テキスト0
'日付に加算
Me!テキスト0 = DateAdd("d", n, tdate)
'このDoeventsがないと、連続で呼び出された場合、表示できない
DoEvents
End Sub
Private Sub Form_Load()
Me!テキスト0 = Date
End Sub
'次の日
Private Sub コマンド2_Click()
Call DateDisp(1)
End Sub
'前の日
Private Sub コマンド3_Click()
Call DateDisp(-1)
End Sub