教えて!ExcelVBA!

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

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

       f:id:m_kbou:20200417212852p:plain

繰り返し処理やプロシージャの実行途中で処理を終了するには、Exit文を使用します。使い方について説明します。

 

【目次】

 

構文

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

=======================================================================

Exitステートメント

=======================================================================

[説明]:

処理を途中で終了するには「Exitステートメント」と記述します。ステートメントには各処理の内容に合わせたステートメントを記述します。各処理のステートメントについては、以下に一覧を添付しますので参考にして下さい。内容を纏めると、「ステートメント]で指定した処理を途中で中断し、処理を終了して下さい。」との意味になります。

f:id:m_kbou:20200319150721p:plain

 

使い方

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

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

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

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文が実行され、途中で処理が終了します

[実行例]:

※1回目の処理が実行された場合

f:id:m_kbou:20200319150620p:plain

※2回目の処理が実行された場合

f:id:m_kbou:20200319150631p:plain

※3回目の処理が実行された場合、途中で処理が終了するため、MsgBoxは表示されません。

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

 

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

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

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文が実行され、途中で処理が終了します

[実行例]:

※1回目の処理が実行された場合

f:id:m_kbou:20200319150647p:plain

※2回目の処理が実行された場合

f:id:m_kbou:20200319150702p:plain

※3回目の処理が実行された場合、途中で処理が終了するため、MsgBoxは表示されません。

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

 

おわりに

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