次の方法で共有


アプリケーション定義またはオブジェクト定義のエラーです

このメッセージは、Raise メソッドまたは Error ステートメントで生成されたエラーが、Visual Basic for Applications で定義されたエラーに対応しない場合に表示されます。 また、Visual Basic for Applications で定義されたエラーと対応しない 引数に対する Error 関数によっても返されます。 したがって、これは、ユーザーが定義したエラー、またはオブジェクト (Microsoft Excel、Visual Basic などのホスト アプリケーションを含む) によって定義されたエラーである可能性があります。 たとえば、Visual Basic フォームでは、Raise メソッドまたは Error ステートメントの引数として番号を指定するだけで、コードから生成できないフォーム関連のエラーが生成されます。 このメッセージの原因と解決策を次に示します。

  • アプリケーションによって Err.Raisen または Errorn ステートメントが実行されましたが、番号 n は Visual Basic for Applications で定義されていません。 これが意図されたものである場合は、エンド ユーザーがエラーの性質を把握できるように、Err.Raise を使用して追加の引数を指定する必要があります。 たとえば、説明の文字列、ソース、およびヘルプ情報を含めることができます。 トラップしたエラーを再現するため、このアプローチは、エラーを再現する前に Err.Clear を実行しなかった場合に動作します。 Err.Clear を最初に実行する場合は、Raise メソッドに対して追加の引数を入力する必要があります。 エラーが発生したコンテキストを確認し、同じエラーを確実に再現するようにしてください。

  • 他のアプリケーションからオブジェクトにアクセスしたときに、Visual Basic エラーにマップできないエラーがプログラムに伝達された可能性があります。

アクセスしたすべてのオブジェクトのドキュメントを確認してください。 Err オブジェクトの Source プロパティには、エラーを生成したアプリケーションまたはオブジェクトのプログラム ID が含まれている必要があります。 オブジェクトによって返されたエラーのコンテキストを把握するには、オブジェクトにアクセスするコードで、On Error GoToline 構文ではなく、On Error Resume Next 構造を使用します。

ホスト アプリケーションでトラップ可能なエラーを一覧表示する

これまで、プログラマーが、ループを使用してトラップ可能なエラー メッセージ文字列を出力することが多くありました。 この処理は、通常、次のようなコードを使って実行されました。

For index = 1 to 500
    Debug.Print Error$(index)
Next index

このコードでも引き続き Visual Basic for Applications エラー メッセージの一覧が表示されますが、ホスト定義エラー (たとえば、フォーム、コントロールなどに関連する Visual Basic のエラー) に対して "アプリケーション定義またはオブジェクト定義エラー" が表示されます。 これらの多くはトラップ可能な実行時エラーです。 ヘルプの [検索] ダイアログ ボックスを使用して、ホスト アプリケーション固有のトラップ可能なエラーの一覧を確認します。 それには、[ 検索 ] をクリックし、最初のテキスト ボックスに「 トラップ可能 」と入力して、[ トピックの表示 ] をクリックします。 次に、下部にあるリスト ボックスで [トラップできるエラー] を選択し、[移動] をクリックします。

詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。

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

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