VBA DoEvents | DoEvents関数をいつどのように使用するか?

Excel VBADoEvents関数

VBA DoEventsの助けを借りて、コードをバックグラウンドで実行すると同時に、Excelやその他のアプリケーションソフトウェアを操作することもできます。DoEventsを使用すると、他のソフトウェアを操作できるだけでなく、コードの実行を中断することもできます。

DoEvents関数は、作業中のコンピューターのオペレーティングシステムに制御を渡します。

DoEvents関数の使い方は?

要件が大きい場合は、大量のVBAコードが必要になります。そのような場合、Excelはしばらくの間ハングして停止し、場合によっては応答しなくなります。

このVBADoEvents Excelテンプレートはここからダウンロードできます– VBA DoEventsExcelテンプレート

例については、以下のコードを見てください。

コード:

 Sub DoEvents_Example1()Dim i As Long For i = 1 To 100000 Range( "A1")。Value = i Next i End Sub 

上記のコードは、1から100000までのシリアル番号を挿入します。タスクの実行には1分以上かかります。実行中、Excelはタスクを完了するためにかなりの時間ハングします。この間、Excelは「Excelが応答していません」というメッセージを表示します。

また、作業中のワークシートにアクセスできません。これは苛立たしいことです。コードが画面の背後で実行されているときに、Excelワークシートを使用できるようにするにはどうすればよいですか。

これは、VBADoEvents関数を追加することで実現できます。

コード:

 Sub DoEvents_Example1()Dim i As Long For i = 1 To 100000 Range( "A1")。Value = i DoEvents Next i End Sub 

コードに関数DoEventsを追加すると、Excelワークシートにアクセスできます。

上から、コードが実行されていることがわかりますが、ワークシートにアクセスできます。

コードの実行を中断する

コードが画面の背後で実行されている場合、行、列を追加し、同じものを削除したり、シートの名前を変更したり、他の多くのことを実行したりできます。DoEventsを追加すると、vbaコードが高速に実行され、前述のタスクがそれ自体で実行されていることに気付くことができます。

  • DoEvents関数の危険性の1つは、ワークシートまたはワークブックを切り替えると、アクティブなシート値が上書きされることです。
  • もう1つの危険は、セルに値を入力すると、コードの実行が停止し、通知すらされないことです。
:DoEventsの上記の危険性にもかかわらず、それはまだ便利な機能です。作成したコードのバグを修正しようとするときに、デバッグプロセスの一部としてDoEventsを使用できます。