VBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」の原因と対処方法

VBAを実行するとVBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」を見る機会はありませんか?

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」の原因はなに?
・VBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」の対処はどうすればよい?

ではないでしょうか?

今回は、
VBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」の原因とサクっとできる対処方法について
まとめます!

VBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」はどんなエラー?

Resumeステートメントはエラーが発生したとしても無視して処理を続けさせるためのステートメントです。

Resumeステートメントはエラー処理の中で使うステートメントですので、エラー処理以外でResumeステートメントを使用した際に発生します。

VBA エラー 20の原因①「Resume ステートメントをエラー処理コードの外に記述」

Resume ステートメントをエラー処理以外で使用すると発生します。

サンプルコードです。

Sub エラーテスト1()
    Dim result As Integer
    Resume Next
    result = 10 / 0 '0除算のエラー発生
    MsgBox "計算結果は " & result & " です"
    Exit Sub
      
Error処理:
    MsgBox "エラーが発生しました!"
    Resume Next
End Sub

0で割り算するときに発生するエラーを発生させていますが、

VBA エラー 11「0 で除算しました。」の原因と対処方法

Resume ステートメントの記載場所がエラー処理コード外であるため、

「そこにResume ステートメントを書いてはいけませんよ!」

と怒られているわけです。

VBA エラー 20の原因①「Resume ステートメントをエラー処理コードの外に記述」の対処方法は そのステートメントをエラー ハンドラー内に移動するか、削除する

VBA エラー 20の対処方法はカンタンで、Resume ステートメントをあるべきエラー処理内に移動するか、

Resume ステートメントを削除するだけです。

Sub エラーテスト1()
    Dim result As Integer
    On Error GoTo Error処理
    
    result = 10 / 0 '0除算のエラー発生
    MsgBox "計算結果は " & result & " です"
    Exit Sub
      
Error処理:
    MsgBox "エラーが発生しました!"
    Resume Next
End Sub

はい、 エラー 20が発生しなくなりましたね!

さいごに

今回は、
VBA エラー 20「エラーが発生していないときに Resume を実行することはできません。」の原因とサクっとできる対処方法について
まとめました。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA ImageChange Image