目次へ戻ります
VB サンプル


VB エラー操作編

Errオブジェクト

Err オブジェクトは、実行時エラーに関する情報を保有しています。

実行時エラーが発生すると、そのエラーを識別するための情報など、エラー処理で利用可能な情報が、Err オブジェクトに格納されます。コード内で実行時エラーを生成するときには、Raise メソッドを使います。

Err オブジェクトの各プロパティは、エラー処理ルーチン内の Exit Sub、Exit Function、Exit Property、Resume Next ステートメントの後で、0 または長さ 0 の文字列 ("") にリセットされます。エラー処理ルーチンの外側で Resume ステートメントを使用した場合は、Err オブジェクトのプロパティはリセットされません。Clear メソッドを使うと、Err を明示的にリセットすることができます。
●On Error Goto エラー処理ルーチンの開始
●On Error Goto 0 エラー処理ルーチンの終了
●On Error Resume Next エラーが起きても処理を続行
●Number エラー番号を取得する
●Source エラーの発生元のオブジェクト名を取得する
●Description エラーに関連する説明文を取得する
●Clear エラー情報のクリアする
●Raise 実行時エラーを生成する
●LastDLLError DLLを呼び出したときのエラーコードを取得
【サンプルリスト】

Private Sub Command1_Click()

   On Error GoTo Err_Rtn  'エラー処理ルーチン開始
   FileCopy "C:\WORK\TEST.TXT", "C:\WORK\SAMPLE.TXT"
   Exit Sub

Err_Rtn:
  MsgBox "Number : " & Err.Number & vbCr & _
         "Source : " & Err.Source & vbCr & _
         "Description : " & Err.Description, _
         vbCritical, _
         "システムエラー"
End Sub
●On Error GoTo ステートメント

【機能】 エラー処理ルーチンが有効になり、実行時エラーが発生すると設定した行ラベルへプログラムの制御が移ます。
【書式】 On Error Goto 行ラベル
【 例 】
  Private Sub Command1_Click()

   On Error GoTo Err_Rtn  'エラー処理ルーチン開始
   FileCopy "C:\WORK\TEST.TXT", "C:\WORK\SAMPLE.TXT"

   Exit Sub

  Err_Rtn:
    MsgBox Err.Description

  End Sub
●On Error GoTo 0 ステートメント

【機能】 エラー処理ルーチンを無効にします。
【書式】 On Error Goto 0
【 例 】
  Private Sub Command1_Click()

   On Error GoTo Err_Rtn  'エラー処理ルーチン開始
   FileCopy "C:\WORK\TEST.TXT", "C:\WORK\SAMPLE.TXT"
   On Error GoTo 0        'エラー処理ルーチン終了

   Exit Sub

  Err_Rtn:
    MsgBox Err.Description

  End Sub
●On Error Resume Next ステートメント

【機能】 実行時エラーが発生してもプログラムを中断せず、次のステートメントから実行を継続します。
【書式】 On Error Resume Next
【 例 】
  Private Sub Command1_Click()

   On Error Resume Next  'エラーが起きても処理を続行させる
   FileCopy "C:\WORK\TEST.TXT", "C:\WORK\SAMPLE.TXT"
   If (Err.Number <> 0) Then
     MsgBox Err.Description
   End If

  End Sub
●Numberプロパティ

【機能】 エラーを指定する数値を設定します。値の取得も可能です。
【書式】 result = Err.Number
【 例 】
  If (Err.Number <> 0) Then
    Debug.Print Err.Number
    Debug.Print Err.Source
    Debug.Print Err.Description
  End If
●Sourceプロパティ

【機能】 エラーの発生元のオブジェクトまたはアプリケーションの名前を示す文字列式を設定します。値の取得も可能です。
【書式】 result = Err.Source
【 例 】
  If (Err.Number <> 0) Then
    Debug.Print Err.Number
    Debug.Print Err.Source
    Debug.Print Err.Description
  End If
●Descriptionプロパティ

【機能】 オブジェクトに関連付けられている説明の文字列を含む文字列式を設定します。値の取得も可能です。
【書式】 result = Err.Description
【 例 】
  If (Err.Number <> 0) Then
    Debug.Print Err.Number
    Debug.Print Err.Source
    Debug.Print Err.Description
  End If
●Clearメソッド

【機能】 オブジェクトに関連付けられている説明の文字列を含む文字列式を設定します。値の取得も可能です。
【書式】 Err.Clear
【 例 】
  If (Err.Number <> 0) Then
    Debug.Print Err.Number
    Debug.Print Err.Source
    Debug.Print Err.Description
    Err.Clear                     'エラー情報のクリア
  End If

※ 次のいずれかのステートメントが実行されると、Clear メソッドが自動的に呼び出されます。
   ・Resume ステートメント
   ・Exit Sub、Exit Function、Exit Property ステートメント
   ・On Error ステートメント
●Raiseメソッド

【機能】 実行時エラーを生成します。
【書式】 Err.Raise number, source, description
【 例 】 Err.Raise 513, "入力画面", "値が不正です。再入力してください。"

※ エラー番号は、0〜512 の値はシステムエラー用に予約されているため、ユーザー定義のエラーに使用できるのは、513〜65535 の範囲の値です。
●LastDLLErrorプロパティ

【機能】 最後にダイナミックリンクライブラリ(DLL)を呼び出したときのエラーコードを返します。
【書式】 result = Err.LastDLLError
【 例 】 result = Err.LastDLLError
【参考】 エラーメッセージ 操作 API編 (FormatMessage)

目次へ戻ります