INDEX
Exitの概要
プロシージャやループから途中で抜ける VBAの予約語 | ||
Exit 概要 Exit ステートメントは、VBAのプロシージャやループから強制的に抜けるために使用されます。 わかりやすく説明 プロシージャやループを途中で抜けるための命令。 |
||
|
Exit Subを使ってプロシージャを途中で終了
以下の例では、Exit Sub
を使ってプロシージャを途中で抜けます。
Sub TestExitSub()
Dim value As Integer
value = 5
If value < 10 Then
MsgBox "値が10未満のため、処理を終了します。"
Exit Sub
End If
MsgBox "このメッセージは表示されません。"
End Sub
解説:
value
が 10 未満の場合、Exit Sub
でプロシージャを途中で終了。- 条件を満たさなければ、通常どおり処理が続行される。
Exit Functionを使って関数を途中で終了
以下の例では、Exit Function
を使って関数を途中で抜けます。
Function GetDiscount(price As Double) As Double
If price < 1000 Then
GetDiscount = 0 ' 1000未満なら割引なし
Exit Function
End If
GetDiscount = price * 0.1 ' 10%割引
End Function
Sub TestExitFunction()
MsgBox "割引額: " & GetDiscount(800) ' 0を返す
MsgBox "割引額: " & GetDiscount(2000) ' 200を返す
End Sub
解説:
price
が 1000 未満なら、割引なし(0)を返して処理終了。- 1000以上なら 10% の割引額を計算。
Exit Forを使ってForループを途中で終了
以下の例では、Exit For
を使ってループを途中で抜けます。
Sub TestExitFor()
Dim i As Integer
For i = 1 To 10
If i = 5 Then
MsgBox "5に達したため、ループを終了します。"
Exit For
End If
Debug.Print i
Next i
End Sub
解説:
i
が 5 になった時点でExit For
によりループを抜ける。- 6 以上の処理は実行されない。
Exit Doを使ってDoループを途中で終了
以下の例では、Exit Do
を使って Do While
ループを抜けます。
Sub TestExitDo()
Dim i As Integer
i = 1
Do While i <= 10
If i = 5 Then
MsgBox "5に達したため、ループを終了します。"
Exit Do
End If
Debug.Print i
i = i + 1
Loop
End Sub
解説:
i
が 5 になった時点でExit Do
によりループを抜ける。- 6 以上の処理は実行されない。
Excel VBAでのExitの活用
以下の例では、セルが空白の場合に Exit Sub
を使って処理を終了します。
Sub CheckCellValue()
Dim cellValue As Variant
cellValue = Range("A1").Value
If IsEmpty(cellValue) Then
MsgBox "セルA1が空です。処理を終了します。"
Exit Sub
End If
MsgBox "セルA1の値: " & cellValue
End Sub
解説:
- セルA1が空の場合、メッセージを表示して処理を終了。
- データがある場合のみ、処理を続行。
Exitの注意事項
- Exit は不要な処理を防ぐのに役立つ: 余計なループや計算を回避できる。
- Exit だけではプログラム全体は終了しない:
Exit Sub
やExit Function
はそのプロシージャだけを終了する。 - Exit ではエラーハンドリングはできない: エラー処理には
On Error
やErr.Raise
を使用する。
よくある質問
- Q: Exit を使うのは良いプラクティスですか?
- A: 条件によって処理を早く終了させたい場合には有効ですが、多用しすぎるとコードの可読性が下がるので適切に使用してください。
- Q: Exit Sub と End の違いは?
- A:
Exit Sub
は現在のプロシージャだけを終了し、End
はVBAの実行自体を完全に停止します。 - Q: ループの途中で抜けると問題がありますか?
- A: ループの途中で処理を抜けることで期待しない動作をする可能性があるため、しっかりと条件を確認してください。
まとめ
- Exit ステートメントはプロシージャやループを途中で終了させる。
Exit Sub
やExit Function
でプロシージャを抜けられる。Exit For
やExit Do
を使うとループの途中で終了できる。- 無駄な処理を省略し、処理を効率化するのに役立つ。