DoEvents 関数

オペレーティング システムが他のイベントを処理できるように、実行を渡します。

構文

DoEvents( )

解説

DoEvents 関数は、単体バージョンの Visual Basic (Visual Basic Professional Edition など) で開かれているフォームの数を表す Integer を返します。 他のすべてのアプリケーションでは、DoEvents はゼロを返します。

DoEvents はオペレーティング システムに制御を渡します。 オペレーティング システムがキュー内のイベントの処理を終了し、SendKeys キューのすべてのキーが送信された後、制御が戻されます。

DoEvents は、たとえばユーザーが一旦開始した処理 (ファイルの検索など) を取り消せるようにする、といった単純な処理を行う場合に最も役に立ちます。 長時間実行しているプロセスの場合にプロセッサを空けるには、タイマーを使用するか、またはタスクを ActiveX EXE コンポーネントに委任する方が適しています。 後者の場合、アプリケーションとは完全に独立してタスクを続行でき、オペレーティング システムがマルチタスクとタイム スライスの処理を行います。

イベント プロシージャ内でプロセッサに一時的に制御を渡すときは、プロシージャが、最初の呼び出しが戻る前とは異なるコード部分から再開されないようにする必要があります。異なる場所から再開すると、予期しない結果になる可能性があります。 また、制御が得られた間に、他のアプリケーションが予期しない方法でプロシージャと対話する可能性がある場合は、 DoEvents を使用しないでください。

次の例では、DoEvents 関数を使用して、1,000 回ループするごとに 1 回、オペレーティング システムに制御を渡します。 DoEvents は、開いている Visual Basic フォームの数を返しますが、これが行われるのは、ホスト アプリケーションが Visual Basic の場合のみです。

' Create a variable to hold number of Visual Basic forms loaded 
' and visible.
Dim I, OpenForms
For I = 1 To 150000    ' Start loop.
    If I Mod 1000 = 0 Then     ' If loop has repeated 1000 times.
        OpenForms = DoEvents    ' Yield to operating system.
    End If
Next I    ' Increment loop counter.


関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。