DoEvents関数

DoEvents関数はIE(InternetExplorer)の完全読込待機処理で利用される関数です。
ループ処理中にオペレーティングシステムに制御を移し途中で処理を操作できるようにします。

目次

DoEvents関数とは

DoEvents関数は、処理の途中にオペレーティングシステムに制御を移すための関数です。時間のかかる処理やループ処理の場合、処理が完了するまでOS(オペレーティングシステム)は制御を行うことができません。(ループ処理中は、OSやExcelそのものにも再描画をさせる暇さえ与えません。)
そこで、DoEvents関数を利用することで一時的にOS(オペレーティングシステム)に制御を移して、処理を行うことができます。長期のループ処理や無限ループ処理に陥った場合に利用されたりします。ただし、使いすぎると処理は安定しますが、処理時間が長くなってしまうこともあるので注意しましょう。
無限ループ対策で使用すれば、Escキーで回避することができるので、便利な関数でもあります。

DoEvents
構文DoEvents
引数省略説明
なし

DoEvents関数で処理の途中で処理を止める

DoEvents関数を利用して処理の途中で処理を止める。

処理の途中で処理を止めるサンプルコード

こちらのサンプルコードはループ処理中でも処理を止めるマクロになります。


Dim stopFlg As Boolean

Sub Sample()

  For i = 0 To 10000

        DoEvents

        If stopFlg = True Then

            MsgBox "処理を停止しました"

            Exit For

        End If

  Next i

End Sub

'ボタンに「stopBtm」マクロを設定しておく
Sub stopBtm()

	stopFlg = True 

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

処理を途中で停止します。

DoEvents処理

解説


Dim stopFlg As Boolean

※ドラッグ(スワイプ)すると全体を確認できます。

グローバル変数を宣言します。


For i = 0 To 10000

 DoEvents

(処理)

Next i

※ドラッグ(スワイプ)すると全体を確認できます。

こちらはA1セルに0~10000の数字を代入していく処理になります。DoEvents関数を設定していますので、ループ処理でも処理を制御することができます。


If stopFlg = True Then

  MsgBox "処理を停止しました"

  Exit For

End If

※ドラッグ(スワイプ)すると全体を確認できます。

こちらはstopFlg変数がTrueになった場合にメッセージボックスを表示させ、処理を停止する処理です。

'ボタンに「stopBtm」マクロを設定しておくSub stopBtm()stopFlg = True End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

ボタン停止の確認はこちらをボタンに設定して試してみてください。

利用されているコンテンツ

DoEvents関数は、IE(InternetExplorer)の完全読込待機処理で利用される関数です。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。

VBAのIE操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。

目次

VBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。