Endの概要
プログラムの強制終了やブロックの終了を行う VBAの予約語 | ||
End 概要 End ステートメントは、VBAでプログラムの実行を強制的に終了したり、プロシージャや条件分岐の終了を示すために使用されます。 わかりやすく説明 プログラムの実行を停止したり、ブロックを終了するための命令。 |
||
|
Endを使ったプログラムの強制終了
以下の例では、End
を使ってプログラムの実行を強制終了します。
Sub TestEnd()
MsgBox "プログラムを終了します。"
End
MsgBox "このメッセージは表示されません。" ' 実行されない
End Sub
解説:
End
を実行すると、プログラムの処理が完全に終了する。End
の後のコードは実行されない。
End Ifによる条件分岐の終了
以下の例では、End If
を使って条件分岐を終了します。
Sub TestEndIf()
Dim score As Integer
score = 80
If score >= 60 Then
MsgBox "合格"
End If
End Sub
解説:
End If
は、If ... Then
ブロックを終了するために使用。- スコアが60以上の場合に「合格」と表示。
End Subによるプロシージャの終了
以下の例では、End Sub
を使ってプロシージャの終了を示します。
Sub TestEndSub()
MsgBox "処理を開始します。"
Exit Sub
MsgBox "このメッセージは表示されません。" ' 実行されない
End Sub
解説:
Exit Sub
を使うと、プロシージャの途中で終了できる。End Sub
はプロシージャの終わりを示す。
Excel VBAでのEndの活用
特定の条件でプログラムを強制終了する例です。
Sub CheckCellValue()
Dim cellValue As Variant
cellValue = Range("A1").Value
If IsEmpty(cellValue) Then
MsgBox "セルA1が空です。処理を終了します。"
End
End If
MsgBox "セルA1の値: " & cellValue
End Sub
解説:
- セルA1が空の場合、
End
を使ってプログラムを終了。 - 値が入力されている場合のみメッセージを表示。
Endの注意事項
- End は通常の終了方法ではない: 必要がない限り
Exit Sub
やExit Function
を使う。 - メモリが解放されない可能性: End を使うと、オブジェクトが適切に解放されないことがある。
- デバッグ時の注意: End を使うと、変数の状態を保持せず完全にリセットされる。
よくある質問
- Q: End を使うのは良い方法ですか?
- A: 可能な限り
Exit Sub
やExit Function
を使い、End
は最終手段として使用します。 - Q: End の後のコードは実行されますか?
- A: いいえ。End の後のコードは一切実行されません。
- Q: End と Exit Sub の違いは?
- A:
End
はVBAの実行を完全に停止し、Exit Sub
は現在のプロシージャのみ終了します。
まとめ
- End はVBAのプログラムを強制終了するために使用される。
- 通常の終了方法としては
Exit Sub
やExit Function
を推奨。 - 条件分岐やプロシージャの終了には
End If
やEnd Sub
を使用する。 - Excel VBAのエラーチェックや異常時の処理に活用できるが、多用は避けるべき。