目次
65536
今回は VBA の Error 関数を使用して、エラー番号とエラーメッセージの一覧をエクセルのワークシートに出力するマクロを作成してみました。
ワークシートへの大量出力は時間が掛かってしまいますが、普段、私が使用する事のない 65536 行までの出力テストとしてもマクロを作成してみました。
65536 行は Excel2003 の最大行です。
マクロの一例
Error(a) の部分で Error 関数を使用しています。
Sub Error関数でエラー番号とエラーメッセージを出力するマクロ() 'マクロの途中停止は「Ctrl + Break」または「Ctrl + Pause/Break」キーを押します。 Dim a As Long '最大値 2147483647 For a = 0 To 65535 '65536 回ループします Cells(a + 1, 1).Select '処理の様子を見る用のセル選択。表示更新する分、時間が掛かります。
Cells(a + 1, 1).Value = a 'エラー番号出力 Cells(a + 1, 2).Value = Error(a) 'エラーメッセージ出力 Next 'ループが完了すると、この行まで来ます Cells(1, 1).Select 'A1 セルに戻る End Sub
実行結果
マクロを実行すると A , B 列にエラー番号とエラーメッセージが出力されました。


引数に 65536
Error 関数の引数に 65536 を指定したマクロも作成してみました。
Sub Error関数の引数に65536を指定()
Debug.Print Error(65536)
End Sub
実行すると、エラーが発生してしまいました。

上記マクロを少し修正してエラー発生時のエラー番号とエラーメッセージを取得してみます。
Sub Error関数の引数に65536を指定_resume_next()
On Error Resume Next 'エラーが発生しても、次の行から処理を継続できる記述
Err.Clear 'エラー情報をリセット。 Err オブジェクトは VBA レベルで既に存在している。
Debug.Print Error(65536) 'エラー発生
Debug.Print Err.Number 'エラー番号取得、出力
Debug.Print Err.Description 'エラー説明取得、出力
End Sub
マクロを実行すると VBE のイミディエイトウィンドウに以下のテキストが出力されました。
6
オーバーフローしました。
Error 関数で引数を「6」にした時のエラーメッセージと一致しているようです。
