繰り返しの処理を行う中である条件が満たされたとき、その繰り返し処理から抜け出すのに「Exitステートメント」が使われます。
Exit Do
Exit For
Exit Sub
それぞれについて解説します。
Exit Do
5教科テストの結果表(合計点の高い順)があります。
合計点350点以上を合格とし、右の「合格者リスト」に書き出すマクロです。

Sub Ext01()
Dim CD As Long ‘①
Dim TLten As Long ‘②
Dim RW As Long ‘③
CD = Range(“B3”) ‘④
TLten = Range(“I3”) ‘⑤
RW = 3 ‘⑥
Do While CD <> 0 ‘⑦
If TLten < 350 Then ‘⑧
Exit Do
End If
Cells(RW, 11) = Cells(RW, 2) ‘⑨
Cells(RW, 12) = Cells(RW, 3) ‘⑩
RW = RW + 1 ‘⑪
TLten = Cells(RW, 9).Value ‘⑫
Loop
End Sub
① CODEを代入する変数 型は数字
② 合計点を代入する変数 型は数字
③ 行番号を代入する変数 型は数字
④ 変数CDに結果表の1件目の「Code」を代入
⑤ 変数Tlten に結果表の1件目の「合計」を代入
⑥ 変数RWに結果表の1件目の「行番号」を代入
⑦ CDが 0 でない間は以下の処理を切り返す。
⑧ もし合計が350点未満になったら、このループから抜け出す
⑨ 合格者のコードを合格者リストに書き出す。
⑩ 合格者の名前を合格者リストに書き出す。
⑪ 次の行番号を変数RWに代入する。
⑫ 次の人の合計点を変数 Tlten に代入する。
Exit For
Sub Ext02()
Dim TL As Long ‘①
Dim P As Long ‘②
TL = 0 ‘③
For P = 1 To 100 ‘④
TL = TL + P ‘⑤
If TL > 300 Then ‘⑥
Exit For
End If
Next P
‘⑦
MsgBox P & “まで加算し合計が ” & _
TL & ” となり300を超えました。”
End Sub
① 合計数を代入する変数 型は数字
② For ~ Next文のカウンター変数 型は数字
③ 合計点を 0 にリセット
④ Pが 1 から 100 まで繰り返す
⑤ TL が1+2+3+・・・と加算されていく。
⑥ TL が300を超えたら、この For ~ Next文から抜け出る
⑦ メッセージで結果を表示する。

Exit Sub
次のような「年齢入力」の画面があります。
年齢を入力し「OKボタン」を押すと、年齢に応じ「飲酒の可否」「選挙権の有無」が表示され、その後干支を求めるセルに移動します。
答えたくない場合「0」を入力、OKボタンを押すと、以下の処理は一切行わずこのプロシージャから抜け出ます。

Sub Ext_03()
Dim NN As Long ‘①
Dim ET As String ‘②
NN = Range(“D2”) ‘③
If NN = 0 Then ‘④
Exit Sub
End If
‘⑤
If NN < 18 Then
Range(“D6”) = “ダメ”
Range(“D7”) = “無し”
ElseIf NN >= 18 And NN < 20 Then
Range(“D6”) = “ダメ”
Range(“D7”) = “有り”
Else
Range(“D6”) = “OK”
Range(“D7”) = “有り”
End If
Range(“D9”).Select ‘⑥
End Sub
① 年齢を代入する変数 型は数字
② 干支を代入する変数 型は文字列
③ セル D2 に入力された年齢をNNに代入
④ もし NN が 0 ならば、このプロシージャから離れる。
⑤ NNが 0 でなければ、それぞれの年齢に応じて処理を行う。
⑥ 処理を行った後、干支を入力するセルに移動し入力を促す。

