VBAのIE(InternetExplorer)制御で利用したDoEvents関数を解説しています。
DoEvents関数はIE(InternetExplorer)の完全読込待機処理で利用される関数です。
ループ処理中にオペレーティングシステムに制御を移し途中で処理を操作できるようにします。
DoEvents関数は、処理の途中にオペレーティングシステムに制御を移すための関数です。時間のかかる処理やループ処理の場合、処理が完了するまでOS(オペレーティングシステム)は制御を行うことができません。(ループ処理中は、OSやExcelそのものにも再描画をさせる暇さえ与えません。)
そこで、DoEvents関数を利用することで一時的にOS(オペレーティングシステム)に制御を移して、処理を行うことができます。長期のループ処理や無限ループ処理に陥った場合に利用されたりします。ただし、使いすぎると処理は安定しますが、処理時間が長くなってしまうこともあるので注意しましょう。
無限ループ対策で使用すれば、Escキーで回避することができるので、便利な関数でもあります。
構文 | 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)の完全読込待機処理で利用される関数です。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。
↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。