Accessむかむか ホーム >> TIPS一覧 >> TIPS

項目

 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
Copyright (C) Accessむかむか