目次

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 列にエラー番号とエラーメッセージが出力されました。

「Error関数でエラー番号とエラーメッセージを出力するマクロ」の実行結果です。 A , B 列に文字が出力されています。
「Error関数でエラー番号とエラーメッセージを出力するマクロ」の実行結果です。 A , B 列に文字が出力されています。
私が普段使用する事の無い 65536 行まで文字が出力されています。
私が普段使用する事の無い 65536 行まで文字が出力されています。

目次まで戻る

引数に 65536

Error 関数の引数に 65536 を指定したマクロも作成してみました。

Sub Error関数の引数に65536を指定()

Debug.Print Error(65536)

End Sub

実行すると、エラーが発生してしまいました。

実行時エラー '6' オーバーフローしました。
実行時エラー '6' オーバーフローしました。

上記マクロを少し修正してエラー発生時のエラー番号とエラーメッセージを取得してみます。

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」にした時のエラーメッセージと一致しているようです。

エラー番号「6」エラーメッセージ「オーバーフローしました。」
エラー番号「6」エラーメッセージ「オーバーフローしました。」

目次まで戻る

テスト環境

  • Windows 10(64 ビット)
  • Microsoft Office Excel 2003

以上、閲覧ありがとうございました。

 

目次まで戻る

前後の投稿