エラー Errオブジェクト

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Err オブジェクト

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

  • 解説

  • Err オブジェクトのプロパティは、エラーを発生させた Visual Basic、オブジェクト、または Visual Basic のプログラマによって設定されます。
  • Err オブジェクトの既定プロパティは Number プロパティです。既定プロパティは Err オブジェクトを指定することにより参照できます。以前のバージョンで Err 関数または Err ステートメントを使用して記述したコードを変更する必要はありません。
  • 実行時エラーが発生すると、そのエラーを識別するための情報など、エラー処理で利用可能な情報が、Err オブジェクトに格納されます。コード内で実行時エラーを生成するときには、Raise メソッドを使います。
  • Err オブジェクトの各プロパティは、エラー処理ルーチン内Exit Sub、Exit Function、Exit Property、Resume Next ステートメントの後で、0 または長さ 0 の文字列 ("") にリセットされます。
  • エラー処理ルーチンの外側で Resume ステートメントを使用した場合は、Err オブジェクトのプロパティはリセットされません
  • Clear メソッドを使うと、Err を明示的にリセットすることができます。
  • システム エラーやクラス モジュールに対して実行時エラーを生成する場合は、Error ステートメントではなく、Raise メソッドを使用します。そのほかのモジュールのコードで Raise メソッドを使用するかどうかは、返される情報の量によって決定します。
  • Err オブジェクトは、適用範囲 (スコープ) がパブリックである組み込みオブジェクトです。コード内でそのインスタンスを作成する必要はありません。

プロパティ

  • Description プロパティ

  • オブジェクトに関連付けられている説明の文字列を含む文字列式を設定します。値の取得も可能です。
  • 解説
  • Err オブジェクトでは、エラーに関連する説明の文字列を設定します。値の取得も可能です。
  • Description プロパティの使用例
  • 次の例は、Err オブジェクトの Description プロパティにユーザー定義のメッセージを設定します。
  • Option Explicit


    Private Sub test()
    Dim Msg
    Err.Clear
    On Error Resume Next
    Err.Raise 6 ' "オーバーフローしました。" エラーを発生させます。
        If Err.Number <> 0 Then
        Err.Description = "この操作に必要なオブジェクトに" _
        & "アクセスすることができませんでした。"
            Msg = "ヘルプ コンテキスト番号 " _
            & Err.HelpContext & " について " & _
            Err.HelpFile _
            & " のヘルプを参照するには、F1 キーまたは Help キーを押してください。"

            MsgBox Msg, , "エラー : " & _
            Err.Description, Err.HelpFile, Err.HelpContext
            Debug.Print Err.Description
            Debug.Print Err.HelpFile
            Debug.Print Err.HelpContext
        End If
    'この操作に必要なオブジェクトにアクセスすることができませんでした。
    'C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\1041\VbLR6.chm
    '1000006
    End Sub
  • HelpContext プロパティ

  • ヘルプ ファイルのトピックに対応するコンテキスト番号を含む文字列式を設定します。値の取得も可能です。
  • 解説
  • HelpContext プロパティを指定すると、HelpFile プロパティで指定したヘルプ トピックが自動的に表示されます。HelpFile プロパティと HelpContext プロパティが空の場合は、Number プロパティの値がチェックされます。その値が Visual Basic の実行時エラーの値に対応している場合は、そのエラーを表す Visual Basic ヘルプのコンテキスト番号が使われます。Number プロパティの値が Visual Basic エラーに対応していない場合は、Visual Basic ヘルプ ファイルの目次画面が表示されます。
  • HelpContext プロパティの使用例
  • 次の例は、Err オブジェクトの HelpContext プロパティを使って、"オーバーフローしました。" エラーに対応する Visual Basic のヘルプを表示します。
  • Option Explicit


    Private Sub test()
    Dim Msg
    Err.Clear
    On Error Resume Next
    Err.Raise 6 ' "オーバーフローしました。" エラーを発生させます。
        If Err.Number <> 0 Then
            Msg = "ヘルプ コンテキスト番号 " _
            & Err.HelpContext & " について " & _
            Err.HelpFile _
            & " のヘルプを参照するには、F1 キーまたは Help キーを押してください。"

            MsgBox Msg, , "エラー : " & _
            Err.Description, Err.HelpFile, Err.HelpContext
            Debug.Print Err.Description
            Debug.Print Err.HelpFile
            Debug.Print Err.HelpContext
        End If
    'オーバーフローしました。
    'C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\1041\VbLR6.chm
    '1000006
    End Sub

  • HelpFile プロパティ

  • ヘルプ ファイルへの絶対バスを含む文字列式を設定します。値の取得も可能です。
  • 解説
  • エラー ErrオブジェクトHelpFileプロパティ解説と使用例 を参照そて下さい。
  • HelpFile プロパティの使用例
  • エラー ErrオブジェクトHelpFileプロパティ解説と使用例 を参照そて下さい。
  • LastDLLError プロパティ

  • 解説
  • エラー API関数の実行時エラーを回避する を参照そて下さい。
  • LastDLLError プロパティの使用例
  • エラー API関数の実行時エラーを回避する を参照そて下さい。
  • Number プロパティ

  • 解説
  • エラー ErrオブジェクトNumberプロパティ解説と使用例 を参照そて下さい。
  • Number プロパティの使用例
  • エラー ErrオブジェクトNumberプロパティ解説と使用例 を参照そて下さい。
  • Source プロパティ

    エラーの発生元のオブジェクトまたはアプリケーションの名前を示す文字列式を設定します。値の取得も可能です。
  • 解説
  • Source プロパティは、エラーを発生させたオブジェクトを表す文字列式を指定します。
  • 一般に、この式はそのオブジェクトのクラス名またはプログラム ID です。
  • アクセスされたオブジェクトで発生したエラーを処理できないときには、Source プロパティを使って情報を提供してください。
  • たとえば、Microsoft Excel にアクセスしたときに "0 で除算しました。
  • " エラーが発生すると、エラーを発生させたオブジェクト Excel によって Err オブジェクトの Number プロパティにそのエラーを表すエラー番号が設定され、Source プロパティに Excel.Application が設定されます。
  • コードを使用してエラーを生成する場合、Source プロパティにはアプリケーションのプログラム ID が設定されます。
  • クラス モジュールの場合は、Source プロパティに project.class の形式でクラスの名前を格納する必要があります。
  • 作成したコードで予期しないエラーが発生すると、自動的に Source プロパティが設定されます。標準モジュール内のエラーの場合、Source プロパティにはプロジェクトの名前が格納されます。
  • クラス モジュール内のエラーの場合、Source プロパティには project.class の形式でクラスの名前が格納されます。
  • Source プロパティの使用例
  • 次の例は、Visual Basic で作成されたオートメーション オブジェクトのプログラム ID を変数 MyObjectID に代入し、その後、Raise メソッドでエラーを発生させるときに、この変数を Err オブジェクトの Source プロパティに代入しています。
  • エラー処理を行うときには、Source プロパティおよび Err オブジェクトのプロパティのうち Number プロパティ以外のプロパティをコード内で使用しないでください。
  • Number プロパティ以外のプロパティは、コードで処理できないエラーが発生した場合に、詳細な情報を表示する目的でのみ使用してください。
  • この例では、App と MyClass への参照が有効であることを想定しています。
  • Option Explicit


    Private Sub test1()
    Dim MyClass, MyObjectID, MyHelpFile, MyHelpContext
    'MyClass という種類のオブジェクトは、エラーを生成し、
    'Source プロパティを含め、Err オブジェクトの全プロパ
    'ティを設定します。
    'Source プロパティには、App オブジェクトの Title プロ
    'パティと MyClassオブジェクトの Name プロパティを組み
    '合わせた変数 MyObjectID を代入します。
    MyObjectID = App.Title & "." & MyClass.Name
    Err.Raise Number:=vbObjectError + 894, Source:=MyObjectID, _
    Description:="プログラムを完了することができませんでした。", _
    HelpFile:=MyHelpFile, HelpContext:=MyHelpContext

    End Sub

メソッド

 

 

2000年01月01日|[VBサンプルコード]:[Error]