項目
DoEventsの利用
概要
DoEventsとは、発生したイベントがOSによって処理されるように、
プログラムで占有していた制御をOSに渡すフロー制御関数とあります。
時間がかかる処理をしているとCPUが占有され他の処理が実行されません。
画面の描画や、キャンセル処理・・・etc。
DoEventsを使用するとキューにあるメッセージを処理する事ができます。
下記例で、「DoEvents未使用」と「DoEvents使用」を実行してみてください。
「DoEvents未使用」の場合には「キャンセルする」を押してもキャンセルできません。
「DoEvents使用」の場合には「キャンセルする」を押すとキャンセルする事ができます。
例
Option Compare Database
Option Explicit
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'フォームに下記コマンドボタンを作成
'「DoEvents使用」「DoEvents未使用」「キャンセルする」
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dim m_isCancel As Boolean 'False:実行 True:中断
Private Sub DoEvents使用_Click()
Dim i As Long
m_isCancel = False
'10万回実行
For i = 1 To 100000
Debug.Print i
DoEvents
If m_isCancel Then '処理中断
MsgBox "キャンセルされました"
Exit For
End If
Next
MsgBox "終了しました"
End Sub
Private Sub DoEvents未使用_Click()
Dim i As Long
m_isCancel = False
'10万回実行
For i = 1 To 100000
Debug.Print i
If m_isCancel Then '処理中断
MsgBox "キャンセルされました"
Exit For
End If
Next
MsgBox "終了しました"
End Sub
Private Sub キャンセルする_Click()
'キャンセルする
m_isCancel = True
End Sub