#263 | On Error GoTo無しでエラーをチェックする方法 | VBA | |
一般的に、エラーをトラップしてその内容に応じて後処理を分岐させるためには、「On Error GoTo ステートメント」を使います。しかし、On Error GoToステートメントを使わずに、エラーが発生したかどうかをそのコードの次の行で調べて処理を分岐させる方法もあります。 次の例では、bytNumというバイト型の変数に、InputBox関数を使ってユーザーが任意の値を入力できるようにしています。バイト型の変数には255までの数値しか代入することができませんので、それ以上の値が入力された場合にはエラー番号「6」の"オーバーフロー"エラーが発生します。また文字などを入力した場合には、エラー番号「13」の"型が一致しません"のエラーが発生します。そして、何もエラーが発生していないときはErrオブジェクトの「Number」プロパティには常に「0(ゼロ)」が保持されていますので、それによってエラーが発生していないことを確認することができます。 また通常は、「bytNum = InputBox(・・・・・・」の行でエラーが発生した場合、その行でプログラムはエラー停止します。そこで、この方法を使う場合には、事前に「On Error Resume Next」を宣言してことによってエラーが発生しても処理を続行するようにし、その次の行でエラーの有無をチェックするようにする必要があります。 Sub Err_Check()
Dim bytNum As Byte On Error Resume Next bytNum = InputBox("255までの数値を入力してください!") Select Case Err.Number Case 0 MsgBox "正しい数値が入力されました!", vbOKOnly + vbExclamation Case 6 MsgBox "入力した値が大きすぎます!", vbOKOnly + vbExclamation Case 13 MsgBox "文字が入力されました!", vbOKOnly + vbExclamation End Select End Sub 実行例 |
|||
|
Copyright © T'sWare All rights reserved |