VBA Do While の書き方
Do While のトラブルを生まない書き方
Do While だけではなくFor ループにも実は落とし穴があります。 つまり、無限ループ地獄。 以下の2つは、いずれも無限ループに陥ります。Do Whil a<>1
:
a = 1
Loop
For i=0 to 10
:
i = 1
Next i
案外怖い ループでの割り込み非許可
実行中に止まらなくなる原因は、VBAの実行中キー割り込みが止められているためです。 そのため CTRL+Break を押してもシステムがそれをうけとることができなくなります。 時々、システムに割り込みがなかったか調べさせる必要があります。 そのコマンドが DoEvents です。 つまり、前述の2つのループちゅうに DoEvents を入れておかないと無限ループに陥った時、プログラムの実行を止めることができなくなり、それまで書き込んだコードが吹っ飛ぶことになります。 もちろん、実行前にCTRL+Sで上書き保存をする癖は必要です。安全な Do While , For ループの書き方。
ループの中に DoEvents を書き込む癖をつけましょう。 というか、もう Do While DoEvents は、セットで覚えてしまいましょう。Do Whil a<>1
DoEvents
:
a = 1
Loop
For i=0 to 10
DoEvents
:
i = 1
Next i