教えて!ExcelVBA!

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

【ExcelVBA 構文】Exit文(処理の途中で終了)の使い方を知りたいです。教えて!

f:id:m_kbou:20200417212852p:plain

繰り返し処理やプロシージャの実行途中で処理を終了するには、Exit文を使用します。具体的には、For~Next文、Do~Loop文、SubやFunctionの各プロシージャを抜ける場合等で使用します。このExit文の使い方について紹介します。

 

 

構文

記述方法は以下の様になります。 

Exit[ステートメント]

[説明]:

処理中に処理を中断・終了させます。

[ステートメント]

各処理に合わせたステートメントを記述します。
※各処理のステートメントは以下一覧の通りです。

ステートメント 機能
Exit Do Do~Loop文の途中で終了します。
Exit For For~Next文の途中で終了します。
Exit Sub Subプロシージャの途中で終了します。
Exit Function Functionプロシージャの途中で終了します。

 

使い方

使い方について具体的に説明します。

(例①)Exit Doを使用した処理を途中で終了させる記述方法

Exit Doを使用した処理を途中で終了させる記述方法について説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 行 As Double

  '↓処理②
  行 = 0

  '↓処理③
  Do Until 行 = 5
    If (行 = 2) Then
      Exit Do
    End If
    MsgBox 行
    行 = 行 + 1
  Loop

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Dimによる変数定義となります。

[処理②]:変数に初期値セット
[処理①]で定義した変数:行に初期値の0をセットします。

[処理③]:Do Until~Loop文の記述
変数:行の値が5になるまでMsgBoxで値を表示しますが、IF文の条件判断で変数:行の値が2の場合は、処理を途中で中断して終了させます。

---------------------------------
1回目の処理では初期値の0が変数:行にセットされているため、0<5でループ処理の継続条件に当てはまることから「0」が表示されます。その後に変数:行に0+1=1がセットされます。

---------------------------------
2回目の処理では変数:行に1がセットされているため、1<5でループ処理の継続条件に当てはまることから「1」が表示されます。その後に変数:行に1+1=2がセットされます。

---------------------------------
3回目の処理では変数:行に2がセットされているため、2<5でループ処理の継続条件には当てはまりますが、IF文の条件判断でExit Do文が実行され、途中で処理が終了します。

---------------------------------

f:id:m_kbou:20210205162717p:plain

※上記ののプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210226171547p:plain

②最初に以下の様に表示されます。MsgBoxで「0」が表示されます。

f:id:m_kbou:20200319150620p:plain

③次に以下の様に表示されます。MsgBoxで「1」が表示されます。

f:id:m_kbou:20200319150631p:plain

※2回目の処理でExitによりDo~Loop文を抜けてしまうため、以降のMsgBoxは表示されません。

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

Exit Doを使用した処理の途中で終了させる記述方法についての説明は以上です。

 

(例②)Exit Forを使用した処理を途中で終了させる記述方法

Exit Forを使用した処理を途中で終了させる記述方法について説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 行 As Double

  '↓処理②
  For 行 = 1 To 5
    If (行 = 3) Then
      Exit For
    End If
    MsgBox 行
  Next

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Dimによる変数定義となります。

[処理②]:For~Next文の記述
変数:行に1から5の値を順次セットし、セット毎にMsgBoxで値を表示しますが、IF文の条件判断で変数:行の値が3の場合は、処理を途中で中断して終了させます。

---------------------------------
1回目の処理では1が変数:行にセットされるため「1」が表示されます。

---------------------------------
2回目の処理では2が変数:番号にセットされるため 「2」が表示されます。

---------------------------------
3回目の処理では3が変数:番号にセットされていますが、IF文の条件判断でExit For文が実行され、途中で処理が終了します。

---------------------------------

f:id:m_kbou:20210205163402p:plain

※上記ののプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210226171713p:plain

②最初に以下の様に表示されます。MsgBoxで「1」が表示されます。

f:id:m_kbou:20200319150647p:plain

③次に以下の様に表示されます。MsgBoxで「2」が表示されます。

f:id:m_kbou:20200319150702p:plain

※3回目の処理でExitによりFor~Next文を抜けてしまうため、以降のMsgBoxは表示されません。

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

Exit Forを使用した処理の途中で終了させる記述方法についての説明は以上です。

 

おわりに

Exit文はIF文等の条件判断処理との組み合わせで使用する事が多いです。是非有効に活用してみて下さい。