エラーを無視する、有効にする

タイトルのマクロは、以下

' エラーを無視する、有効にする
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

コードの詳細な説明

  1. サブルーチンの宣言:Sub OnErrorResumeNext_OnErrorGoTo0()
    • このサブルーチンは、エラー処理を無視したり、再びエラーを有効にしたりする方法を示します。
  2. 変数の宣言:Dim sh As Worksheet
    • sh という名前のワークシート変数を宣言します。
  3. エラー処理を開始する:On Error Resume Next
    • On Error Resume Next ステートメントは、エラーが発生してもプログラムの実行を続行するようにします。エラーが発生した場合、そのエラーを無視して次のステートメントに進みます。
  4. エラーが発生するコード:Set sh = Worksheets("Sheet2")
    • “Sheet2” という名前のワークシートを sh に設定しようとします。しかし、”Sheet2″ が存在しない場合、エラーが発生します。この時点では、On Error Resume Next が有効なので、エラーは無視され、次のステートメントに進みます。
  5. エラー処理を終了する:On Error GoTo 0
    • On Error GoTo 0 ステートメントは、エラー処理を終了し、通常のエラー処理に戻ります。これにより、今後発生するエラーは無視されず、通常のエラー処理が行われます。
  6. 再度エラーが発生するコード:Set sh = Worksheets("Sheet2")
    • 再び “Sheet2” という名前のワークシートを sh に設定しようとします。しかし、今回は On Error GoTo 0 が有効なので、”Sheet2″ が存在しない場合、エラーが発生してプログラムが停止します。

エラー処理の詳細

  • On Error Resume Next:
    • エラーが発生した場合、そのエラーを無視して次のステートメントに進みます。エラーが発生してもプログラムの実行を続行するため、一時的にエラーを無視したい場合に使用します。
  • On Error GoTo 0:
    • エラー処理を終了し、通常のエラー処理に戻します。これにより、今後発生するエラーは無視されず、通常のエラー処理が行われます。

実行の流れ

  1. On Error Resume Next が有効になっているので、最初の Set sh = Worksheets("Sheet2") がエラーを発生しても無視されます。
  2. On Error GoTo 0 により、エラー処理が通常の状態に戻ります。
  3. もう一度 Set sh = Worksheets("Sheet2") を実行すると、”Sheet2″ が存在しないため、エラーが発生してプログラムが停止します。

このコードは、特定のコードブロックで一時的にエラーを無視し、その後再び通常のエラー処理に戻す方法を示しています。

Follow me!