Form.Error イベント (Access)

Error イベントは、フォームにフォーカスがあるときに、Microsoft Access で実行時エラーが生成されたときに発生します。

構文

エラー (DataErr応答)

expressionForm オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
DataErr 必須 Integer エラーが発生したときに Err オブジェクトによって返されるエラー コード。 Error 関数と共に DataErr 引数を使用して、対応するエラー メッセージに数値をマップします。
Response 必須 Integer この設定は、エラー メッセージが表示されるかどうかを決定します。 Response 引数には、次のいずれかの組み込み定数を指定できます。
  • acDataErrContinue エラーを無視し、既定の Microsoft Access エラー メッセージを表示せずに処理を続行します。 既定のエラー メッセージの代わりにカスタム エラー メッセージを使用できます。

  • acDataErrDisplay (既定値) 既定のアクセス エラー メッセージを表示します。

注釈

これには、Access データベース エンジンのエラーが含まれますが、Visual Basic の実行時エラーや ADO からのエラーは含まれません。

このイベントが発生したときにマクロまたはイベント プロシージャを実行するには、 OnError プロパティをマクロの名前または [イベント プロシージャ] に設定します。

Error イベントが発生したときにイベント プロシージャまたはマクロを実行すると、Access エラー メッセージをインターセプトし、アプリケーションのより具体的な意味を伝えるカスタム メッセージを表示できます。

次の使用例では、既定のエラー メッセージをカスタム エラー メッセージに置き換える方法を示します。 Access から重複キーが見つかったことを示すエラー メッセージ (エラー コード 3022) が返されると、このイベント プロシージャによりアプリケーション固有の情報をユーザーに提供するメッセージが表示されます。

次の使用例の実行結果を確認するには、各レコードで一意な社員コードをキーとするテーブルに基づくフォームに、次のイベント プロシージャを追加します。

Private Sub Form_Error(DataErr As Integer, Response As Integer) 
    Const conDuplicateKey = 3022 
    Dim strMsg As String 
 
    If DataErr = conDuplicateKey Then 
        Response = acDataErrContinue 
        strMsg = "Each employee record must have a unique " _ 
            & "employee ID number. Please recheck your data." 
        MsgBox strMsg 
    End If 
End Sub

次の使用例では、既定のエラー メッセージをカスタム エラー メッセージに置き換える方法を示します。

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Select Case DataErr
        Case 2113
            MsgBox "Only numbers are acceptable in this box", vbCritical, "Call 1-800-123-4567"
            Response = acDataErrContinue
        Case 2237
            MsgBox "You can only choose from the dropdown box"
            Response = acDataErrContinue
        Case 3022
            MsgBox "You entered a value that exists already in another record"
            Response = acDataErrContinue
            SSN.Value = SSN.OldValue
        Case 3314
            MsgBox "The DOH is required, so you cannot leave this field empty"
            Response = acDataErrContinue
        Case Else
            Response = acDataErrDisplay
    End Select
    ActiveControl.Undo
End Sub

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

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