DoEvents関数
DoEvents関数はIE(InternetExplorer)の完全読込待機処理で利用される関数です。
ループ処理中にオペレーティングシステムに制御を移し途中で処理を操作できるようにします。
目次
DoEvents関数とは
DoEvents関数は、処理の途中にオペレーティングシステムに制御を移すための関数です。時間のかかる処理やループ処理の場合、処理が完了するまでOS(オペレーティングシステム)は制御を行うことができません。(ループ処理中は、OSやExcelそのものにも再描画をさせる暇さえ与えません。)
そこで、DoEvents関数を利用することで一時的にOS(オペレーティングシステム)に制御を移して、処理を行うことができます。長期のループ処理や無限ループ処理に陥った場合に利用されたりします。ただし、使いすぎると処理は安定しますが、処理時間が長くなってしまうこともあるので注意しましょう。
無限ループ対策で使用すれば、Escキーで回避することができるので、便利な関数でもあります。
構文 | 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
実行結果
処理を途中で停止します。
解説
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)の完全読込待機処理で利用される関数です。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。