次のコードはエラーが発生した際に、エラー番号からメッセージを表示するマクロである。 空欄に入る適切な語句を解答しなさい。
Sub Exam1()
On Error Goto Error1
Sheets("Sheet3"). Name = Range("C1")
Exit Sub
Error1:
Select Case 【 ① 】.【 ⓶ 】
Case9
MsgBox ”対象のブック内にSheet3はありません”
Case Else
MsgBox ”想定外の何らかのエラーが発生しました”
End Select
End Sub
正解
【 ① 】err
【 ② 】number
解説
発生したエラーの、エラー情報やエラー番号はErrオブジェクトに格納されます。
Numberプロパティでエラーごとに決まっているエラー番号を返して、プログラムがどの様なエラーが発生したかを判断し、適切なエラーコントロールを行います。
エラー番号
9・・・”インデックスが有効範囲にありません。” 本問題のケースだとブック内にシート名Sheet3が存在しないときに表示されます。.
1004・・・同じ名前のブックが存在する。ブック名に不正な文字がある、ブックが保護されているなど。
他にもエラー番号は存在しますが代表的なものは上記2点です。
[コード解説]
Sub Exam1()
On Error GoTo Error1
' エラーが発生した場合にError1ラベルへジャンプするように設定しています。
Sheets("Sheet3").Name = Range("C1")
' シート「Sheet3」の名前をセルC1の値に変更します。
Exit Sub
' エラーがなければ通常終了します。
Error1:
' エラー処理を開始します。
Select Case Err.Number
' Err.Numberを使用してエラー番号を取得し、条件分岐します。
Case 9
' エラー番号が9の場合、対象のブック内にSheet3がないと判断してメッセージを表示します。
MsgBox "対象のブック内にSheet3はありません"
Case Else
' その他のエラーについては、想定外のエラーとしてメッセージを表示します。
MsgBox "想定外の何らかのエラーが発生しました"
End Select
End Sub