エラー Error関数で擬似エラーをさせエラーを番号一覧を取得

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Error 関数

指定したエラー番号に対応するエラー メッセージを返します。

  • 構文
  • Error[(errornumber)]
  • 引数 errornumber には任意のエラー番号を指定します。この引数は省略可能です。有効な範囲内で定義されていない番号を引数 errornumber に指定すると、Error 関数は "ユーザー定義エラー" という文字列を返します。引数 errornumber が有効な範囲内の番号であり、定義されていない場合、Error 関数は文字列 "アプリケーション定義またはオブジェクト定義のエラーです。" を返します。有効な範囲外の番号を指定すると、実行時エラーが発生します。引数 errornumber を省略すると、最後に発生した実行時エラーに対応するメッセージを返します。実行時エラーが発生していない場合、Error 関数は長さ 0 の文字列 ("") を返します。
  • 解説
  • Err オブジェクトのプロパティの設定値を検証して、最新の実行時エラーを識別します。Error 関数の戻り値は、Err オブジェクトの Description プロパティに対応します。
  • Error 関数の使用例
  • 次の例は、Error 関数を使って、エラー番号に対応したエラー メッセージを出力します。
Option Explicit


Sub ErrList()
'************************************************
'Err関数で擬似エラーをさせエラーを番号一覧を取得
'************************************************

Dim i As Long
Dim str As String
Dim strTrp As String

strTrp = "アプリケーション定義またはオブジェクト定義のエラーです。"

    For i = 1 To 1000
        str = Error(i)
        If str <> strTrp Then
            Debug.Print i & vbTab & str
        End If
    Next i

End Sub
'3   Return に対応する GoSub がありません。
'5   プロシージャの呼び出し、または引数が不正です。
'6   オーバーフローしました。
'7   メモリが不足しています。
'9   インデックスが有効範囲にありません。
'10  この配列は固定されているか、または一時的にロックされています。
'11  0 で除算しました。
'13  型が一致しません。
'14  文字列領域が不足しています。
'16  式が複雑すぎます。
'17  要求された操作は実行できません。
'18  ユーザーによる割り込みが発生しました。
'20  エラーが発生していないときに Resume を実行することはできません。
'28  スタック領域が不足しています。
'35  Sub または Function が定義されていません。
'47  DLL のクライアント アプリケーションの数が多すぎます。
'48  DLL 読み込み時のエラーです。
'49  DLL が正しく呼び出せません。
'51  内部エラーです。
'52  ファイル名または番号が不正です。
'53  ファイルが見つかりません。
'54  ファイル モードが不正です。
'55  ファイルは既に開かれています。
'57  デバイス I/O エラーです。
'58  既に同名のファイルが存在しています。
'59  レコード長が一致しません。
'61  ディスクの空き容量が不足しています。
'62  ファイルにこれ以上データがありません。
'63  レコード番号が不正です。
'67  ファイルが多すぎます。
'68  デバイスが準備されていません。
'70  書き込みできません。
'71  ディスクが準備されていません。
'74  ディスク名は変更できません。
'75  パス名が無効です。
'76  パスが見つかりません。
'91  オブジェクト変数または With ブロック変数が設定されていません。
'92  For ループが初期化されていません。
'93  パターン文字列が不正です。
'94  Null の使い方が不正です。
'96  サポートされているイベント受信最大数のイベントが既に発生してい
'    るので、オブジェクトのイベント シンクを実行できません。
'97  オブジェクトが定義クラスのインスタンスではない場合、このオブジェ
'    クトに関するフレンド関数は呼び出せません。
'98  プロパティまたはメソッドの呼び出しの場合には、引数または戻り値と
'    してプライベート オブジェクトへの参照を含めることはできません。
'321 不正なファイル形式です。
'322 必要な一時ファイルを作成できません。
'325 リソース ファイルの形式が不正です。
'380 プロパティの値が不正です。
'381 不正なプロパティ配列インデックスです。
'382 実行時には値を設定できません。
'383 値を設定できません。値の取得のみ可能なプロパティです。
'385 プロパティ配列インデックスが必要です。
'387 値を設定できません。
'393 実行時には値を取得できません。
'394 値を取得できません。値の設定のみ可能なプロパティです。
'422 プロパティが見つかりません。
'423 プロパティまたはメソッドが見つかりません。
'424 オブジェクトが必要です。
'429 ActiveX コンポーネントはオブジェクトを作成できません。
'430 クラスはオートメーションまたは予測したインターフェースをサポート
'    していません。
'432 オートメーションの操作中にファイル名またはクラス名を見つけられま
'    せんでした。
'438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。
'440 オートメーション エラーです。
'442 リモート プロセス用のタイプ ライブラリまたはオブジェクト ライブラリ
'    への参照は失われました。参照設定を解除して [OK] を押してください。
'443 オートメーション オブジェクトには既定値がありません。
'445 オブジェクトはこの動作をサポートしていません。
'446 オブジェクトは名前付き引数をサポートしていません。
'447 オブジェクトは現在の国別情報の設定をサポートしていません。
'448 名前付き引数が見つかりません。
'449 引数は省略できません。
'450 引数の数が一致していません。または不正なプロパティを指定しています。
'451 Property Let プロシージャが定義されておらず、Property Get プロシージ
'    ャからオブジェクトが返されませんでした。
'452 序数が不正です。
'453 関数は指定された DLL には定義されていません。
'454 コード リソースが見つかりません。
'455 コード リソースのロック エラーです。
'457 このキーは既にこのコレクションの要素に割り当てられています。
'458 Visual Basic でサポートされていないオートメーションが変数で使用されて
'    います。
'459 オブジェクトまたはクラスがこのイベント セットをサポートしていません。
'460 クリップボードのデータ形式が不正です。
'461 メソッドまたはデータ メンバが見つかりません。
'462 リモート サーバーがないか、使用できる状態ではありません。
'463 ローカル マシンにクラスが登録されていません。
'481 ピクチャが不正です。
'482 プリンタ エラーです。
'735 一時ファイルに保存できません。
'744 検索文字列が見つかりませんでした。
'746 置換後の文字列が長すぎます。

 

 

2000年01月01日|[VBサンプルコード]:[Error]