Form.Error イベント (アクセス)

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

構文

エラー (DataErr応答)

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

パラメーター

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

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

注釈

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

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

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

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

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

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 のサポートおよびフィードバックを参照してください。