はじめに
Visual Basic for Applications(VBA)を使ってExcelのマクロを作成する際に避けられないのが実行時エラーです。特にエラーコード「実行時エラー20」は多くのVBAユーザーが直面する一般的な問題です。この記事では、エラーの原因と具体的な対処法を分かりやすく丁寧に解説します。記事を読むことで以下のメリットが得られます。
- 実行時エラー20の原因を理解できる
- エラーの対処方法を知ることができる
- VBAのデバッグスキルが向上する
- 今後同様のエラーに遭遇した際に迅速に対応できる
エラー20の原因とは?
実行時エラー20は、主に「Resume without error」のコードが実行された場合に発生します。これは、エラーハンドリングのコードブロック内でエラーが発生せずにResume
ステートメントが実行された場合に発生するエラーです。このエラーの背後には主に以下のような原因があります。
- エラーハンドリングルーチンが不適切に記述されている
- エラーが予期せず発生せず、エラーハンドリングコードが実行される
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
を使用してエラーオブジェクトをクリアする - エラーの原因に応じて、適切なユーザーへのメッセージやログの記録を行う