Excel VBAの「Error 関数」について解説します。
Error 関数とは
Excel VBA の Error 関数は、指定したエラー番号に対応するエラーメッセージを返します。
Error 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
Error 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
Error(errornumber)
引数
引数 | 説明 |
---|---|
errornumber | 【省略可能】任意の有効なエラー番号を指定します ※ エラー番号は 0 ~ 65535 の範囲です |
【引数を省略した場合】
・最後に発生した実行時エラーのエラーメッセージが返されます。
・実行時エラーが発生していない場合は空文字列(“”)が返されます。
戻り値
戻り値 | 説明 |
---|---|
文字列 (String) | 指定のエラー番号に対応するエラー メッセージを返します |
【無効なエラー番号が指定された場合】
・「アプリケーション定義またはオブジェクト定義のエラーです。」 という文字列が返されます。
主なエラー番号とエラーメッセージの一覧
エラー番号 | エラーメッセージ |
---|---|
3 | Return に対応する GoSub がありません。 |
5 | プロシージャの呼び出し、または引数が不正です。 |
6 | オーバーフローしました。 |
7 | メモリが不足しています。 |
9 | インデックスが有効範囲にありません。 |
10 | この配列は固定されているか、または一時的にロックされています。 |
11 | 0 で除算しました。 |
13 | 型が一致しません。 |
14 | 文字列領域が不足しています。 |
16 | 式が複雑すぎます。 |
17 | 要求された操作は実行できません。 |
18 | ユーザーによる割り込みが発生しました。 |
20 | エラーが発生していないときに Resume を実行することはできません。 |
28 | スタック領域が不足しています。 |
35 | Sub または Function が定義されていません。 |
48 | DLL 読み込み時のエラーです。 |
52 | ファイル名または番号が不正です。 |
53 | ファイルが見つかりません。 |
54 | ファイル モードが不正です。 |
55 | ファイルは既に開かれています。 |
57 | デバイス I/O エラーです。 |
58 | 既に同名のファイルが存在しています。 |
61 | ディスクの空き容量が不足しています。 |
62 | ファイルにこれ以上データがありません。 |
67 | ファイルが多すぎます。 |
68 | デバイスが準備されていません。 |
70 | 書き込みできません。 |
71 | ディスクが準備されていません。 |
75 | パス名が無効です。 |
76 | パスが見つかりません。 |
91 | オブジェクト変数または With ブロック変数が設定されていません。 |
92 | For ループが初期化されていません。 |
94 | Null の使い方が不正です。 |
この一覧は、VBAでよく発生する実行時エラーの一部です。詳細な一覧については、Errオブジェクトの解説記事内に掲載していますのでリンク先をご参照ください。
解説(使用例)
以下、Error 関数の使用例サンプルコードです。
Error関数サンプル1(InputBoxで番号入力)
InputBoxで入力した番号のエラーメッセージを表示させるサンプルです。
'■Error関数サンプル1(入力エラー番号のメッセージを表示)
Sub Error_Sample01()
Dim num As String
Dim ErrNum As Long
On Error GoTo ErrHnd
num = InputBox("エラー番号を入力してください")
ErrNum = CLng(num) '数字以外はここでエラーが発生します
MsgBox "Error(" & ErrNum & "): " & Error(ErrNum), vbCritical
Exit Sub
ErrHnd:
'実際に発生したエラー番号とメッセージを表示
MsgBox "Error(" & Err.number & "): " & Error, vbCritical
End Sub
InputBoxでメッセージを確認したいエラー番号を入力します。ここでは「5」を入力しています。
エラー番号「5」に対するメッセージを Error(5) で取得し、アイコンを付けて表示しています。
実行時に発生したエラーについては、エラーハンドリングしてエラーを表示させるようにしています。
下の画像は、InputBoxに数字以外を入力したことで発生したエラーです。
MsgBox "Error(" & Err.number & "): " & Error, vbCritical
エラーオブジェクト(Err.number)でエラー番号を取得し、Error 関数は引数を省略して「直前に発生した実行時エラー」のメッセージを表示するようにしています。Error(Err.number) としても同じです。
Error関数サンプル2(指定番号を連続表示)
表示したいエラー番号から指定番号まで連続で表示さるサンプルです。
'■Error関数サンプル2(連続でエラーメッセージを表示させる)
Sub Error_Sample02()
Dim ErrNum As Long, en As Long
Dim strMsg As String
On Error GoTo ErrHnd
ErrNum = CLng(InputBox("取得開始エラー番号を入力してください"))
en = CLng(InputBox("終わりのエラー番号を入力してください"))
Do While ErrNum < en + 1
strMsg = strMsg & _
"Error(" & ErrNum & "): " & Error(ErrNum) & vbCrLf
ErrNum = ErrNum + 1
Loop
MsgBox strMsg
Exit Sub
ErrHnd: 'Debug.Print ErrNum
'実際に発生したエラー番号とメッセージを表示
MsgBox "Error(" & Err.number & "): " & Error, vbCritical
End Sub
下のMsgBox画像は、エラー番号 5 ~ 15 までを連続表示させたものです。
「アプリケーション定義またはオブジェクト定義のエラーです。」と表示された番号は、定義されていない無効な番号ということです。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA Errore 関数は、引数に指定したエラー番号に対応する「エラーメッセージ」を表示します。
具体的な使いどころとしては、実行時エラーで処理が中断しないように On Error ステートメントを使いますが、発生したエラーについての処理に利用します。
例えば、エラーログを作成したり、エラーメッセージを具体的に分かりやすくカスタムしたい場合などにも利用できます。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;