【エクセルVBA】実行時エラー20の原因と対策を詳しく解説

VBA

はじめに

Visual Basic for Applications(VBA)を使ってExcelのマクロを作成する際に避けられないのが実行時エラーです。特にエラーコード「実行時エラー20」は多くのVBAユーザーが直面する一般的な問題です。この記事では、エラーの原因と具体的な対処法を分かりやすく丁寧に解説します。記事を読むことで以下のメリットが得られます。

  • 実行時エラー20の原因を理解できる
  • エラーの対処方法を知ることができる
  • VBAのデバッグスキルが向上する
  • 今後同様のエラーに遭遇した際に迅速に対応できる

エラー20の原因とは?

実行時エラー20は、主に「Resume without error」のコードが実行された場合に発生します。これは、エラーハンドリングのコードブロック内でエラーが発生せずにResumeステートメントが実行された場合に発生するエラーです。このエラーの背後には主に以下のような原因があります。

  1. エラーハンドリングルーチンが不適切に記述されている
  2. エラーが予期せず発生せず、エラーハンドリングコードが実行される
  3. On Error Resume Nextステートメントの後に適切なエラーチェックが行われていない

対処法1: エラーハンドリングの見直し

エラー20に遭遇した場合、最初に行うべきはエラーハンドリングのコードを見直すことです。エラーハンドリングは、エラーが発生した際にプログラムがクラッシュするのを防ぎ、ユーザーにフレンドリーなメッセージを表示するために重要です。以下のポイントに注意して、エラーハンドリングのコードを見直しましょう。

  • On Error GoTo [ラベル]を使用して、エラーが発生した際にジャンプする先を明確にする
  • エラー処理ルーチン内でResume, Resume Next, Resume [ラベル]のいずれかを適切に使用する
  • エラー処理後はExit SubまたはExit Functionで通常の処理を抜けるようにする

対処法2: エラーチェックの徹底

On Error Resume Nextステートメントを使用する場合は、その後に適切なエラーチェックを行うことが重要です。このステートメントはエラーを無視して次の行のコードを実行しますが、必ずエラーをチェックして適切な処理を行う必要があります。エラーチェックを徹底することで、予期せぬエラー20の発生を防ぐことができます。

  • エラー処理を使用する際は、If Err.Number <> 0 Thenを使ってエラーの有無をチェックする
  • エラーが検出された場合は、Err.Clearを使用してエラーオブジェクトをクリアする
  • エラーの原因に応じて、適切なユーザーへのメッセージやログの記録を行う
タイトルとURLをコピーしました