[Excel VBA] エラー処理 <確認問題>

スポンサーリンク

今回は、Excel VBAのエラー処理に関する理解度チェック問題です。
知識的な観点で言うと初・中級レベルの方向けの内容で、問題は5問あります。挑戦してみましょう。

【問題1】On Error Resume Next の動作

次のコードを実行すると、メッセージボックスに何が表示されますか?

  1. 「0」 と表示される
  2. エラーが発生し、実行が停止する
  3. 空白(何も表示されない)
  4. エラーを無視して次の処理へ進み、「x の値: 0」と表示される
正解:

4) エラーを無視して次の処理へ進み、「x の値: 0」と表示される
(解説)

  • On Error Resume Next により エラーが発生しても処理が継続される。
  • x = 10 / 0 はゼロ除算エラーになるが、スキップされるため MsgBox は実行される。
  • ただし、エラーによりx には値が代入されない。
  • x は 事前に宣言されている変数(Integer 型) なので、初期値の 0 のまま。
  • 「x の値: 0」 を表示する。

【問題2】On Error GoTo の使い方

次のコードを実行すると、どうなりますか?

  1. エラーが発生し、処理が停止する
  2. “エラーが発生しました!" というメッセージが表示される
  3. 正常に実行され、エラーは発生しない
  4. arr(5) = 10 で強制終了するが、エラーメッセージは出ない
正解:

2) “エラーが発生しました!" というメッセージが表示される
(解説)

  • On Error GoTo ErrorHandler により、エラー発生時に ErrorHandler: へジャンプする。
  • arr(5) = 10 は配列の範囲外アクセスでエラー発生。
  • ErrorHandler: にジャンプし、メッセージボックスが表示される。

【問題3】Err オブジェクトの活用

次のコードを実行したとき、メッセージボックスに表示される内容はどうなりますか?

  1. エラー番号: 0, 内容: (空白)
  2. エラー番号: 11, 内容: ゼロで除算しました
  3. エラーが発生しないため、メッセージは表示されない
  4. エラー番号: 1004, 内容: アプリケーション定義またはオブジェクト定義のエラー
正解:

2) エラー番号: 11, 内容: ゼロで除算しました
(解説)発生したエラーの情報はErr オブジェクトに格納されます。Err オブジェクトを調べることによりエラー内容を確認することが出来ます。

  • 10 / 0 はゼロ除算エラー(エラー番号 11)。
  • Err.Number でエラー番号を取得できる。
  • Err.Description でエラーの内容("ゼロで除算しました")が表示される。

【問題4】エラー処理のリセット

次のコードを実行したとき、最後の MsgBox は何が表示されますか?

  1. “エラーはクリアされました"
  2. “エラーが残っています"
  3. エラーが発生し、処理が停止する
  4. 何も表示されない
正解:

1) “エラーはクリアされました"
(解説)

  • Err.Clear を実行すると、エラー情報がリセットされる。
  • リセットにより Err.Number = 0 になるため、"エラーはクリアされました" と表示される。

【問題5】エラー処理の終了

On Error Resume Next の影響を解除するには、どのコードを追加すればよいでしょうか?

  1. Err.Clear
  2. On Error GoTo 0
  3. On Error Resume Next をもう一度書く
  4. On Error Exit
正解:

2) On Error GoTo 0
(解説)

  • On Error Resume Next は、エラーを無視して次の行へ進める設定。
  • On Error GoTo 0 を実行すると、通常のエラーチェックに戻る(エラー発生時に停止)。
  • Err.Clear はエラー情報が削除されるだけで、エラー処理の方法については変更されない。

スポンサーリンク

確認・練習問題Excel,VBA

Posted by Nh