EXCEL VBA ループ処理からの抜け出し(Exit For / Exit Do)

 

EXCEL VBA ループ処理からの抜け出し(Exit For / Exit Do)

 

 

 ●はじめに

EXCEL VBAでのループ処理は、「For Next ・Do While Loop・Do Until Loop・Do Loop While」など、複数ありますが、ループ処理はある特定な回数や条件が一致した時にループから抜けるのが一般的ですが、ここで紹介する「Exit ForとExit Do」を利用する事で、ループ途中でもループから抜ける事ができます。また、無限ループするかも知れない処理を実行する時などにも処理から抜け出せるように、Exit For/Exit Doを利用する事も出来ます。それでは、順番に説明をいたします。

 

 

 ●書式の説明 ( Exit For/ Exit For )の使い方

※Exitステートメントは、ループの途中から抜け出す事ができる便利な機能です。ループ条件と別にIF文などを使い別条件を使ってループから抜け出す事ができます。
Exit For/ Exit For

 

 

EXCEL VBA Exit For・Exit Doの使い方(ループ処理から抜ける)

 

 

 ●プログラム説明 (サンプルプログラム①)
下記のサンプルプログラムは、Exit Forを利用したサンプルプログラムになります。サンプルプログラムの説明ですが、下表には、購入したいリストが上位からランキング順で品名が入力されています。このランキング順で予算額内で購入できる品名については、F列【購入予定】に【買える】がD列セルに表示されます。

※下記のサンプルプログラムは、For Next で作成した場合とDo While Loopで作成した場合と、2種類のサンプルプログラムを作成しております。なお、処理結果については、どちらも同じ処理内容・結果になります。

 

【For NextでExit Forを利用した場合】

 

【Do While LoopでExit Doを利用した場合】

 

●実行前~実行後 ※プログラム実行後、入力した予算額に応じて購入できる商品に対して【購入予定】に【買える】と表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Exit For・Exit Doの使い方(空白行でループ処理から抜ける)

 

 

●プログラム説明 (サンプルプログラム②)
下記のサンプルプログラムは、For Next のループ処理から途中で抜け出すサンプルプログラムです。下表に、品名のリストがあります。リストデータは、全体を見ると22行(最終行)までデータは登録されていますが、18行目に空白行があります。データとしては、ここで区切りをつけていますので、ここまでの間の価格合計を「合計額」に表示させます。

 

 

 ●実行前~実行後 ※プログラム実行後、品名のリストデータ3行目から空白行(18行)の一つ上まで価格を集計して結果を合計額(E3)に記入しました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Exit For・Exit Doの使い方(検索・一致でループ処理から抜ける)

 

 

 ●プログラム説明 (サンプルプログラム③)

下記のサンプルプログラムは、Do While Loop のループ処理から途中で抜け出すサンプルプログラムです。プログラム実行後、品名を入力して品名リストを検索して入力した品名とリストの品名が一致した時に、該当した価格をメッセージボックスで表示します。

 

 

 

 ●実行前~実行後 ※入力した品名「ノートパソコン」を表から検索して一致して、ノートパソコンの価格を表示しました。
(画面クリックして拡大)

 

 

無限ループから強制的に終了する方法 (無限ループ回避、応答無し)

 

 ●説明 【無限ループとは、ループ処理が永遠に終わない事を言います。】
VBAプログラムを作成して、ループ処理で特に「Do While Loop」や「Do Until Loop」などを利用する場合は、条件式や変数の加算などの処理を記入する事を忘れて実行した場合、無限ループが発生していまいます。無限ループが発生すると、応答無しやEXCELが固まってしまいます。
ただし、無限ループに陥った場合にESCキー】を押すか【CTRLキー】+【Breakキー】を同時に押すことで強制的にプログラム(無限ループ)を中断させる事が出来ます。

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。