まずは、Resumeステートメントの正しい使い方から。
Sub Sample1() On Error GoTo Error1 ActiveWorkbook.SaveAs "C:\Work\Sample.xlsx" MsgBox "処理が完了しました" Exit Sub Error1: MsgBox "保存されませんでした" Err.Clear Resume Next End Sub
アクティブブックに名前を付けて保存するマクロです。SaveAsメソッドの前に「On Error Goto Error1」を実行して、"もしエラーが発生したら、ラベルError1にジャンプする"ようにします。SaveAsメソッドでC:\Work\Sample.xlsxに保存するのですが、もし同じフォルダに同名のファイルが存在すると、次の確認が表示されます。
ここで[いいえ]ボタンか[キャンセル]ボタンをクリックすると、ブックは保存されません。保存されないということは、SaveAsメソッドによる"保存する"という行為が正常に終了されなかったことになり、SaveAsメソッドはエラーを発生させます。処理はラベルError1にジャンプしますので「保存されませんでした」というMsgBoxが表示されます。続いて実行される「Resume Next」はエラーが発生した行の次に戻れという意味なので、SaveAsメソッドの次行である「MsgBox "処理が完了しました"」が実行されます。
とまぁ、これがResumeステートメントの使い方です。このように、Resumeステートメントはエラー処理の中で使われなければなりません。それを
Sub Sample2()
ActiveWorkbook.SaveAs "C:\Work\Sample.xlsx"
MsgBox "処理が完了しました"
Resume Next
End Sub
のように、エラー処理と関係のない使い方をしたとき、このエラーが発生します。
解決方法は…エラー処理の中で使ってください、つーことですね。