次の方法で共有


エラー トラップ

エラーをトラップし、プロシージャ内のエラー処理ステートメントの場所にプロシージャ フローを指示するには、 On Error GoTo ステートメントを使用します。 たとえば、次のステートメントはフローをラベル行に送ります。

On Error GoTo ErrorHandler

プロシージャ内の各エラー処理のラベルには、同じプロシージャのほかの要素と競合しないように、固有の名前を付け、名前の後にコロンを付けます。 プロシージャ内では、エラー処理ラベルの前に Exit Sub 、または Exit Function ステートメントを入れて、エラーが発生しない場合はエラー チェックのコードを実行しないようにします。

Sub CausesAnError() 
    ' Direct procedure flow. 
    On Error GoTo ErrorHandler 
    ' Raise division by zero error. 
    Err.Raise 11 
    Exit Sub 
 
ErrorHandler: 
    ' Display error information. 
    MsgBox "Error number " & Err.Number & ": " & Err.Description 
    ' Resume with statement following occurrence of error. 
    Resume Next 
End Sub

Err オブジェクトの Raise メソッドは、指定されたエラーを生成します。 Err オブジェクトの Number プロパティは、最新の実行時エラーに対応する数値を表し、 Description プロパティは、指定したエラーに対応するメッセージ テキストを表します。

注:

  • バージョン 1.x および 2.0 の Access では、Error ステートメントを使用してエラーを生成し、Err 関数を使用してエラー番号を返し、Error 関数を使用してエラーの説明を返した可能性があります。 Error ステートメントと Error 関数に依存する既存のエラー処理コードは引き続き機能します。 ただし、新しいコードを記述するときは、Err オブジェクトとそのプロパティとメソッドを使用することをお勧めします。

  • バージョン 1.x および 2.0 の Access では、すべての Automation (旧称 OLE オートメーション) エラーに対して 1 つのエラーのみが返されました。 現バージョンでは、エラーを生成した COM コンポーネント アプリケーションは、このアプリケーションを使って作業するときに受け取るものと同じエラー情報を返すようになりました。 このため、新しいオートメーション エラーを適切に処理するために、既存のエラー処理コードの書き換えが必要になる場合があります。

  • Access エラーまたはデータ アクセス オブジェクト (DAO) エラーに関連付けられている説明的な文字列を返したいが、コードでエラーが実際に発生していない場合は、AccessError メソッドを使用して文字列を返すことができます。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。