Excel VBAでFor文を途中で抜ける:Exit

VBAで繰り返し文の処理を途中で抜けるには、Exitステートメントを使用します。以下では、使い方と使用例をご紹介します。

Exitステートメント

for…NextステートメントやDo...Loopステートメントで、繰返し処理を途中で抜ける際に使用します。

For文の場合は「 Exit for」、Do文の場合は「Exit Do」といった具合で

構文:Exit (ステートメント名)

で記述します。通常、If...ThenやSelect Caseステートメントを併用し、ある条件を満たしたらループを抜ける、という使い方をします。

使用例

ここでは、Exit Forのみ説明します。下記例は、A列の値の中に「値0のセル」が見つかるとループを抜けます。セルA5の値が0ですが、実際に抜けるかどうか脱出時の変数iを出力して確認してみます。

(データの状態)Exit1(コード)

[実行結果] Exit2

For文の中にExit Forを組み込みます。i=5で出力されたのでループを脱出できています。

使用例2

下記例は、列Aと列Bの各値を総当たりで加算し、合計が500になる組合せが存在すれば「True」、無ければ「False」を返すものです。セルA2とB4の合計が500ですので、今回は「True」となるはずです。

Exit5

これを調べるためのコードは一見、下記でよさそうですが、Exitがないのでうまくいきません。

[実行結果]Exit4

i=2、j=4の時に、変数Sum500は一時的に「True」となっていたのですが、そのままループを続行してしまったため、最後のi=5、j=5での結果が出てしまいました。正しい結果を得るためには、合計が500になる組み合わせが見つかった時点で、すぐにループを抜ける必要があります。下記に、Exitを入れたコードを示します。内側「j」のループを抜けたら、外側「i」のループもすぐ抜けるようコード内(2)の記述も忘れないようにします。

[実行結果]Exit6

Exitを用いたら、無事500になる組み合わせがあると判断されました。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて