ExcelマクロVBA技術解説
実行時にトラップ可能なエラー番号一覧

ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説
最終更新日:2019-11-05

実行時にトラップ可能なエラー番号一覧


マクロVBA実行時に発生するエラーのエラー番号とエラーメッセージおよび簡単な理由と対策の一覧です。
以下の表にあるエラーはトラップ(捕捉)できるエラー一覧になります。
On ErrorステートメントおよびErrオブジェクトのNumber ロパティを使用して、エラーへの対処を行うことができます。


マクロVBAでのエラーとは



Sub sample()
  Dim i As Long
  On Error Resume Next
  i = "A"
  If Err.Number <> 0 Then
    Debug.Print Err.Number
    Debug.Print Err.Description
  End If
End Sub

上記の結果は、イミディエイトウインドウに
13
型が一致しません。

と表示されます。

マクロ VBA サンプル画像

VBA実行時のエラー番号一覧

以下の一覧には、そもそもVBA実行で発生しない、もしくはエラー発生を再現できないエラーも含まれています。



番号 メッセージ 理由と対策
3 Return に対応する GoSub がありません。 Returnステートメントに対応するGoSubステートメントを確認
5 プロシージャの呼び出し、または引数が不正です。 引数が許容値の範囲か確認
6 オーバーフローしました。 代入、計算、データ型変換の結果が、その変数の許容範囲か確認
7 メモリが不足しています。 不要なアプリケーション、ドキュメント等を閉じます。
モジュールまたはプロシージャを小さく分割します。
仮想メモリを増やす。
メモリ常駐プログラムを削除します。
Public 変数を減らします。
9 インデックスが有効範囲にありません。 存在しない配列要素を参照していないか確認
10 この配列は固定されているか、または一時的にロックされています。 再定義できない配列の次元を再定義しています。
11 0 で除算しました。 0で割り算しています
13 型が一致しません。 互換性のないデータ型の間で代入を行っています。
14 文字列領域が不足しています。 文字列の操作の式で、一時的な文字列が必要な式の場合に、文字列が長すぎます。
16 式が複雑すぎます。 浮動小数点式でネストされている式の数が多すぎます。
17 要求された操作は実行できません。 現在実行中のコードをプログラムで変更しようとしています。
18 ユーザーによる割り込みが発生しました。 ユーザーが割り込みキーを押しました。
20 エラーが発生していないときに Resume を実行することはできません。 Resumeステートメントが、アクティブなエラー処理ルーチン以外で実行されています。
28 スタック領域が不足しています。 再帰プロシージャが正しく終了していることを確認
35 Sub または Function が定義されていません。 プロシージャの名前が間違っています。
47 DLL のクライアント アプリケーションの数が多すぎます。
48 DLL 読み込み時のエラーです。
49 DLL が正しく呼び出せません。
51 内部エラーです。
52 ファイル名または番号が不正です。 ファイル番号のファイルが正しくOpenされた状態かを確認
53 ファイルが見つかりません。 存在しないファイルを参照しています。
54 ファイル モードが不正です。 ファイルを開いたときのモードに対応していないステートメントを使用していまする
55 ファイルは既に開かれています。 閉じられていないファイルをOpenしています。
57 デバイス I/O エラーです。 デバイスが正しく動作しているかを確認
58 既に同名のファイルが存在しています。 既に存在するファイル名と同じ名前を指定しています。
59 レコード長が一致しません。 Getステートメントまたは Putステートメントの指定が、でOpenステートメントで指定された長さと異なります。
61 ディスクの空き容量が不足しています。
62 ファイルにこれ以上データがありません。 ファイルの末尾以降を読み込もうとしています。
63 レコード番号が不正です。 レコード番号が 0 以下です。
67 ファイルが多すぎます。 同時に開くことができるディスク ファイルの数には限度があります。
68 デバイスが準備されていません。 デバイスが正しく動作しているかを確認
70 書き込みできません。 書き込み保護のディスクに書き込もうとしているか、またはロックされているファイルにアクセスしようとしています。
71 ディスクが準備されていません。 指定されたドライブにディスクがありません。
74 ディスク名は変更できません。 Nameステートメントを使用して、ファイルを別のドライブに移動しようとしています。
75 パス名が無効です。 ファイル指定の形式が間違っています。
既存の読み取り専用ファイルと同じ名前でファイルを保存しようとしています。
読み取り専用ファイルをシーケンシャルOutputまたはAppend モードで開こうとしています。
76 パスが見つかりません。 指定したパスが存在するか確認。
91 オブジェクト変数または With ブロック変数が設定されていません。 有効なオブジェクトを参照していないオブジェクト変数を使用しようとしています。
Nothing に設定されているオブジェクト変数を使用しようとしました。
92 For ループが初期化されていません。 For...Nextループの途中にジャンプしていませんか。
93 パターン文字列が不正です。 Like 演算子で指定されているパターン文字列が無効です。
94 Null の使い方が不正です。 Null 値のバリアント型変数の値を取得しようとしています。
97 オブジェクトが定義クラスのインスタンスではない場合、このオブジェクトに関するフレンド関数は呼び出せません。
98 プロパティまたはメソッドの呼び出しの場合には、引数または戻り値としてプライベート オブジェクトへの参照を含めることはできません。
298 システムリソースまたは DLL をロードできません。
320 キャラクタ デバイスは使えません。
321 不正なファイル形式です。
322 必要な一時ファイルを作成できません。
325 リソース ファイルの形式が不正です。
327 データ値が見つかりません。
328 不正なパラメータです。配列に書き込めません。
335 システム レジストリにアクセスできません。
336 コンポーネントが正しく登録されていません。
337 コンポーネントが見つかりません。
338 コンポーネントが正常に実行されませんでした。
360 このオブジェクトは既にロードされています。
361 このオブジェクトは、ロードまたはアンロードすることはできません。
363 指定されたコントロールが見つかりません。
364 既にアンロードされています。
365 現在アンロードできません。
368 ファイルは古い形式で作成されています。このプログラムには新しい形式のファイルが必要です。
371 指定されたオブジェクトは、Show メソッドのオーナー フォームとして使用できません。
380 プロパティの値が不正です。 不適切な値がプロパティに割り当てられています。
381 不正なプロパティ配列インデックスです。
382 実行時には値を設定できません。
383 値を設定できません。値の取得のみ可能なプロパティです。 実行時に値の取得のみ可能なプロパティへ値を設定しようとしています。
385 プロパティ配列インデックスが必要です。
387 値を設定できません。 実行時には値の設定ができないプロパティです。
393 実行時には値を取得できません。 実行時には値の取得ができないプロパティです。
394 値を取得できません。値の設定のみ可能なプロパティです。 実行時には値の取得ができないプロパティです。
400 既にフォームは表示されています。モーダルにできません。 既にフォーム表示されています。
402 一番手前 (前面) のモーダル フォームを先に閉じてください。 複数のフォームが表示されている場合は、一番手前のフォームから閉じて下さい。
419 オブジェクトを利用できません。
422 プロパティが見つかりません。 プロパティ名が正しいかどうかを確認
423 プロパティまたはメソッドが見つかりません。 名前が間違っていないか確認
424 オブジェクトが必要です。 オブジェクト修飾子が指定されていません。
425 オブジェクトの使い方が不正です 適切な適用範囲外でオブジェクトを使用しようとしています。
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 ローカル マシンにクラスが登録されていません。
480 AutoRedraw イメージを作成できません。
481 ピクチャが不正です。
482 プリンター エラーです。
483 プリンタ ドライバは指定されたプロパティをサポートしていません。
484 システムからプリンタ情報を受けるときに問題が発生しました。プリンタが正しく設定されているかを確かめてください。
485 ピクチャの形式が不正です。
486 フォームのイメージをこのプリンターで印刷することはできません。
520 クリップボードを空にできません。 VBA実行で発生するかの詳細は不明
521 クリップボードを開けません。 VBA実行で発生するかの詳細は不明
735 一時ファイルに保存できません。 VBA実行では通常は発生しないはず
744 検索文字列が見つかりませんでした。 VBA実行では通常は発生しないはず
746 置換後の文字列が長すぎます。 VBA実行では通常は発生しないはず
1004 アプリケーション定義またはオブジェクト定義のエラーです。 Visual Basic for Applications で定義されたエラーに対応しない場合に表示されます。
31001 メモリが不足しています。 VBA実行で発生するかの詳細は不明
31004 オブジェクトがありません。 VBA実行で発生するかの詳細は不明
31018 クラスが設定されていません。 VBA実行で発生するかの詳細は不明
31027 オブジェクトをアクティブにできません。 VBA実行で発生するかの詳細は不明
31032 埋め込みオブジェクトが作成できません。 VBA実行で発生するかの詳細は不明
31036 ファイルへの書き込み中にエラーが発生しました。 VBA実行で発生するかの詳細は不明
31037 ファイルの読み込み中にエラーが発生しました。 VBA実行で発生するかの詳細は不明
-2147221080 オートメーション エラーです。 削除されたオブジェクトを参照しています。
上記以外 アプリケーション定義またはオブジェクト定義のエラーです。 Visual Basic for Applications で定義されたエラーに対応しない場合に表示されます。

ユーザー定義エラーについて
エラー番号0~512の値はシステム エラー用に予約されています。
エラー番号513~65535の値は、ユーザー定義エラー用に使用できます。
ただし、上記一覧の513~も掲載されているように、システム エラーで使われているものも存在します。
例えば、1004はVBA実行では良く発生するエラーとなっています。

Err.Raiseで発生させたユーザー定義エラーの場合は、Descriptionに設定したメッセージになります。
Descriptionに設定しない場合は、上記一覧のメッセージとなります。

実行時にトラップ可能なエラー番号一覧の最後に

良く発生しそうなエラーのみ簡単な理由と対策を記載しました。
同じエラーメッセージであっても、発生原因は多岐に及ぶ事が多いものです。
基本にのっとったコードを書くようにすることで、エラーは格段に減ります。

よくある代表的なエラーについては、以下で初心者向け解説をしています。
よくあるVBA実行時エラーの解説と対応
VBAを書き終えて、いざ実行したら意味不明なメッセージが… ここでは初心者向けに、代表的な実行時エラーの解説とその対応について説明します。中級者以上の方は、実行時にトラップ可能なエラー番号一覧と対処 こちらを参考に、エラー対応(OnError等)を実装してください。

Errオブジェクトとユーザー定義エラーについての基本的な使い方については以下を参照してください。
第134回.Errオブジェクトとユーザー定義エラー|VBA入門
VBA実行時には種々のエラーが発生します。実行時エラーに関する情報は、Errオブジェクトには入っていますので、VBA実行でエラー発生した場合は、Errオブジェクトを参照しエラー内容を調べることになります。Errオブジェクトの使い方と、ユーザー定義エラーの生成方法について解説します。



同じテーマ「マクロVBA技術解説」の記事

入力規則のドロップダウンが消えてしまうマクロ(Shapes内のDrop Down)
実行時にトラップ可能なエラー番号一覧
フォルダー・ファイル(ブック)・シートの文字制限
Excel2013におけるScreenUpdatingの問題点
Dir関数の制限について
よくあるVBA実行時エラーの解説と対応
Application.Goto使用時の注意
ScreenUpdating=False時にエラー停止後にシートが固まったら
標準スタイル違いの問題点:標準フォント複写、列幅をピクセルで合わせる
VBAでエラー行位置(行番号)を取得できるErl関数


新着記事NEW ・・・新着記事一覧を見る

VBAにおける変数のメモリアドレスについて|VBA技術解説(11月8日)
空文字列の扱い方と処理速度について(""とvbNullString)|VBA技術解説(1月7日)
Errオブジェクトとユーザー定義エラー|VBA入門(11月5日)
シングルクォートの削除とコピー(PrefixCharacter)|VBA技術解説(11月4日)
ユーザー定義型の制限とクラスとの使い分け|VBA技術解説(11月3日)
クリップボードに2次元配列を作成してシートに貼り付ける|VBA技術解説(11月1日)
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)|VBA技術解説(10月31日)
VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • 実行時にトラップ可能なエラー番号一覧

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ