教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】DoEvents関数の使い方を教えて!

構文

構文は以下の通りです。

DoEvents

解説

DoEvents関数は、イベントの処理を待機するために使用されます。イベントとは、ユーザーからの入力、マウスの動き、キーボード入力など、プログラムに影響を与える外部からのアクションのことを指します。そのようなイベントが発生するまで、マクロの実行を一時停止します。

使い方

具体的な使い方を紹介します。

DoEvents

この単一の行は、マクロの実行を一時停止し、他のイベントを処理するための余裕を与えます。このようなイベント処理の待機は、長時間実行されるマクロや処理の途中でのユーザーからの干渉を許容する必要がある場合に特に有用です。

プログラミング例

以下に、プログラミング例を紹介します。

Sub LongRunningMacro()
    Dim i As Long
    For i = 1 To 100000
        ' 何らかの処理
        If i Mod 1000 = 0 Then
            DoEvents ' イベント処理の待機
        End If
    Next i
    MsgBox "処理が完了しました!"
End Sub

上記の例では、100,000回のループを実行しています。ループの内部でDoEvents関数を使用していますが、これによりマクロの実行を一時停止し、他のイベントの処理を許容します。具体的には、ループが1,000回ごとに一時停止し、Excelが他の操作(例:キー入力、マウスの動き)に対応できるようにします。

まとめ

DoEvents関数は、特定のイベントが発生するまでマクロの実行を一時停止するために使用されます。この関数を使用することで、他のイベントの処理を許容しながら、長時間実行されるマクロやユーザーからの干渉を許容する処理を実行することができます。使い方は非常にシンプルで、単純に「DoEvents」と記述するだけです。是非活用してください。