エラーを無視する、有効にする
タイトルのマクロは、以下
' エラーを無視する、有効にする
Sub OnErrorResumeNext_OnErrorGoTo0()
Dim sh As Worksheet
'エラー処理を開始する
On Error Resume Next
'「Sheet2」ワークシートは存在しないのでエラーが発生するが
'エラーは無視される
Set sh = Worksheets("Sheet2")
'エラー処理を終了する
On Error GoTo 0
'エラーが発生する
Set sh = Worksheets("Sheet2")
End Sub
コードの詳細な説明
- サブルーチンの宣言:
Sub OnErrorResumeNext_OnErrorGoTo0()
- このサブルーチンは、エラー処理を無視したり、再びエラーを有効にしたりする方法を示します。
- 変数の宣言:
Dim sh As Worksheet
sh
という名前のワークシート変数を宣言します。
- エラー処理を開始する:
On Error Resume Next
On Error Resume Next
ステートメントは、エラーが発生してもプログラムの実行を続行するようにします。エラーが発生した場合、そのエラーを無視して次のステートメントに進みます。
- エラーが発生するコード:
Set sh = Worksheets("Sheet2")
- “Sheet2” という名前のワークシートを
sh
に設定しようとします。しかし、”Sheet2″ が存在しない場合、エラーが発生します。この時点では、On Error Resume Next
が有効なので、エラーは無視され、次のステートメントに進みます。
- “Sheet2” という名前のワークシートを
- エラー処理を終了する:
On Error GoTo 0
On Error GoTo 0
ステートメントは、エラー処理を終了し、通常のエラー処理に戻ります。これにより、今後発生するエラーは無視されず、通常のエラー処理が行われます。
- 再度エラーが発生するコード:
Set sh = Worksheets("Sheet2")
- 再び “Sheet2” という名前のワークシートを
sh
に設定しようとします。しかし、今回はOn Error GoTo 0
が有効なので、”Sheet2″ が存在しない場合、エラーが発生してプログラムが停止します。
- 再び “Sheet2” という名前のワークシートを
エラー処理の詳細
- On Error Resume Next:
- エラーが発生した場合、そのエラーを無視して次のステートメントに進みます。エラーが発生してもプログラムの実行を続行するため、一時的にエラーを無視したい場合に使用します。
- On Error GoTo 0:
- エラー処理を終了し、通常のエラー処理に戻します。これにより、今後発生するエラーは無視されず、通常のエラー処理が行われます。
実行の流れ
On Error Resume Next
が有効になっているので、最初のSet sh = Worksheets("Sheet2")
がエラーを発生しても無視されます。On Error GoTo 0
により、エラー処理が通常の状態に戻ります。- もう一度
Set sh = Worksheets("Sheet2")
を実行すると、”Sheet2″ が存在しないため、エラーが発生してプログラムが停止します。
このコードは、特定のコードブロックで一時的にエラーを無視し、その後再び通常のエラー処理に戻す方法を示しています。