次の方法で共有


OnError マクロ アクション

適用先: Access 2013、Office 2013

OnError アクションを使用すると、マクロでエラーが発生したときに行われる処理を指定できます。

設定

OnError アクションの引数は次のとおりです。

アクションの引数

説明

[設定]

エラーが発生した場合の一般的な動作を指定します。 ドロップダウン ボックスの矢印をクリックし、次の設定値のいずれかをクリックします。

設定

説明

Next

Microsoft Office Access 2007 では、エラーの詳細が MacroError オブジェクトに記録されますが、マクロの実行は停止されません。 マクロは次のアクションを続行します。

Macro Name/マクロ名

実行中のマクロが停止され、 Macro Name/マクロ名 引数で指定されているマクロが実行されます。

Fail/失敗

実行中のマクロが停止され、エラー メッセージが表示されます。

マクロ名

引数 Go to が [マクロ名] に設定されている場合は、エラー処理に使用するマクロの名前を入力します。 The name you type must match a name in the Macro Name column of the current macro; you can't enter the name of a different macro object. In the example below, the ErrorHandler macro is contained in the same macro object as the OnError action. Go to 引数を [次へ] または [失敗] に設定した場合、この引数は空白にしておく必要があります。

注釈

  • OnError アクションは、通常はマクロの先頭に配置されますが、先頭以降に配置することもできます。 このアクションによって設定されるルールは、アクションを実行するたびに適用されます。

  • Go to 引数を Fail に設定すると、マクロに OnError アクションが存在しない場合と同じように Access が動作します。 つまり、エラーが発生した場合は、マクロの実行が停止され、標準的なエラー メッセージが表示されます。 [ 失敗 ] 設定値の主な用途は、マクロ内でそれ以前に設定したエラー処理を無効にすることです。

次のマクロは、 OnError アクションの使用を示しています。 この例では、 OnError アクションは、エラーが発生したときに ErrorHandler という名前のカスタム エラー処理マクロを実行することを指定します。 エラーが発生すると、CatchErrors サブマクロが呼び出されます。 エラー番号が 2102 の場合、特定のメッセージが表示され、マクロの実行が停止します。 それ以外の場合は、エラーを説明するメッセージが表示され、追加のトラブルシューティングを実行できるようにマクロが一時停止されます。 ErrorHandler マクロは、エラーに関する情報を表示する MacroError オブジェクトを参照するメッセージ ボックスを表示します。

サンプル コードの提供元:Microsoft Access 2010 Programmer's Reference

    /* MACRO: mcrThrowErrors                                  */
    /* PURPOSE: Error handling using macros in Access 2010    */
    
    OnError
        Go to Macro Name
        Macro Name CatchErrors
    
    OpenForm 
        Form Name frmSamples
        View Form
        Filter Name
        Where Condition
        Data Mode
        Window Mode Normal
    
    MessageBox 
        Message This message appears after the OpenForm action
        Beep Yes
        Type None
        Title
    
    
    /* SUBMACRO: CatchErrors                                   */
    
    SubMacro: CatchErrors
        If [MacroError].[Number]=2101 Then
            MessageBox
                Message Cannot find the specified form!
                Beep Yes
                Type Critical
                Title
            StopMacro
    
        Else
            MessageBox
                Message =[MacroErro].[Description]
                Beep Yes
                Type None
                Title Unhandled Error
    
            SingleStep
        End If
    
    End SubMacro