本ページには広告が含まれています。

ExcelVBA Error関数 指定のエラーメッセージを返す

ExcelVBA Error関数 指定のエラーメッセージを返す

Excel VBAの「Error 関数」について解説します。

スポンサーリンク

Error 関数とは

Excel VBA の Error 関数は、指定したエラー番号に対応するエラーメッセージを返します。

Error 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

Error 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

Error(errornumber)

引数

引数 説明
errornumber【省略可能】任意の有効なエラー番号を指定します
※ エラー番号は 0 ~ 65535 の範囲です

【引数を省略した場合】
・最後に発生した実行時エラーのエラーメッセージが返されます。
・実行時エラーが発生していない場合は空文字列(“”)が返されます。

戻り値

戻り値説明
文字列
(String)
指定のエラー番号に対応するエラー メッセージを返します

【無効なエラー番号が指定された場合】
・「アプリケーション定義またはオブジェクト定義のエラーです。」 という文字列が返されます。

主なエラー番号とエラーメッセージの一覧

エラー番号エラーメッセージ
3Return に対応する GoSub がありません。
5プロシージャの呼び出し、または引数が不正です。
6オーバーフローしました。
7メモリが不足しています。
9インデックスが有効範囲にありません。
10この配列は固定されているか、または一時的にロックされています。
110 で除算しました。
13型が一致しません。
14文字列領域が不足しています。
16式が複雑すぎます。
17要求された操作は実行できません。
18ユーザーによる割り込みが発生しました。
20エラーが発生していないときに Resume を実行することはできません。
28スタック領域が不足しています。
35Sub または Function が定義されていません。
48DLL 読み込み時のエラーです。
52ファイル名または番号が不正です。
53ファイルが見つかりません。
54ファイル モードが不正です。
55ファイルは既に開かれています。
57デバイス I/O エラーです。
58既に同名のファイルが存在しています。
61ディスクの空き容量が不足しています。
62ファイルにこれ以上データがありません。
67ファイルが多すぎます。
68デバイスが準備されていません。
70書き込みできません。
71ディスクが準備されていません。
75パス名が無効です。
76パスが見つかりません。
91オブジェクト変数または With ブロック変数が設定されていません。
92For ループが初期化されていません。
94Null の使い方が不正です。

この一覧は、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」を入力しています。

Error_Sample01 実行時のInputBox画像

エラー番号「5」に対するメッセージを Error(5) で取得し、アイコンを付けて表示しています。

Error_Sample01 エラーメッセージを表示したMsgBox画像

実行時に発生したエラーについては、エラーハンドリングしてエラーを表示させるようにしています。
下の画像は、InputBoxに数字以外を入力したことで発生したエラーです。

Error_Sample01 エラー発生時のMsgBox画像

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 までを連続表示させたものです。

Error_Sample02 MsgBox画像

「アプリケーション定義またはオブジェクト定義のエラーです。」と表示された番号は、定義されていない無効な番号ということです。

おわりに

Excel VBA Errore 関数は、引数に指定したエラー番号に対応する「エラーメッセージ」を表示します。

具体的な使いどころとしては、実行時エラーで処理が中断しないように On Error ステートメントを使いますが、発生したエラーについての処理に利用します。

例えば、エラーログを作成したり、エラーメッセージを具体的に分かりやすくカスタムしたい場合などにも利用できます。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!