DoEvents 関数

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

注: Microsoft Jet Expression Service がサンドボックス モードで実行されている場合 (安全でない可能性がある式の評価は行われません)、このトピックで説明する関数、メソッド、オブジェクト、またはプロパティは無効です。サンドボックス モードの詳細については、ヘルプで "サンドボックス モード" を検索してください。

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

構文

DoEvents ( )

解説

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

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

DoEvents は、ファイルの検索のような処理を開始した後でユーザーがそれをキャンセルできるようにするような、簡単なことを行うのに最も便利です。長時間のプロセスでは、タイマーを使うか、または ActiveX EXE コンポーネントにタスクを委任することによってプロセッサに実行を渡す方が適しています。後者の場合、タスクは引き続きアプリケーションから完全に独立しており、オペレーティング システムがマルチタスクと時間スライスの処理を行います。

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

注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。

この例では、DoEvents関数を使って、ループ 1000 回ごとに 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 Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×