VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 エラー操作
実行時エラーに関する処理

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エラーが起きても処理を続行
● Err.Numberエラー番号を取得する
● Err.Sourceエラーの発生元のオブジェクト名を取得する
● Err.Descriptionエラーに関連する説明文を取得する
● Err.Clearエラー情報のクリアする
● Err.Raise実行時エラーを生成する
● Err.LastDLLErrorDLLを呼び出したときのエラーコードを取得


● エラー処理の記述例

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


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


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


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


● Err.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 ステートメント


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

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


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