教えて!ExcelVBA!

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

ExcelVBAでDoEvents関数の使い方

構文

構文は以下の通りです。

DoEvents

解説

DoEvents関数は、VBAのコードが実行されている間に、Windowsが他のイベント(例えば、マウスのクリックやキー入力など)を処理できるようにします。通常、VBAコードは一連の処理を終わらせるまで他の操作をブロックしますが、DoEventsを使うことで、ユーザーがExcelの操作をしたり、他のアプリケーションを動かしたりできるようにします。例えば、時間のかかるループが実行中の場合、DoEventsを挿入すると、その間にユーザーがExcelのウィンドウを操作したり、他のウィンドウに切り替えることが可能になります。

プログラミング例

具体的なプログラミング例を紹介します。

Sub 長い処理()
    Dim カウント As Long
    カウント = 0
    Do While カウント < 100000
        カウント = カウント + 1
        ' 1000回に1度DoEventsを呼び出して他の操作を許可
        If カウント Mod 1000 = 0 Then
            DoEvents
        End If
    Loop
    MsgBox "処理が完了しました"
End Sub

上記のプログラムでは、カウントが10万になるまでループを続けます。1000回ごとにDoEventsを呼び出すことで、ユーザーが他の操作をできるようにしています。ループが終了すると、メッセージボックスで「処理が完了しました」と表示されます。

まとめ

DoEventsは、VBAのコードが長時間実行される際に、ユーザーがExcelを操作できるようにするための便利な関数です。処理を一時的に中断することなく、他のイベントを処理できるため、特に大きなループや時間のかかる操作を行う際に役立ちます。ただし、頻繁に使いすぎると、処理が遅くなる可能性があるため、適度に使用することが推奨されます。