私はVBAを通じてクエリとレポートを生成しています。スナップショットとしてレポートを出力するかどうかをユーザーに尋ねるオプションがあります。私は最初にスナップショットをしたいかどうか尋ねます。彼らがいいえと言うなら、何も起こらない。彼らが「はい」と答えると、どこに保存するかを尋ねるプロンプトが表示されます。アクセス時に出力エラーを処理する
「はい」と答えてから「キャンセル」をクリックすると、レポートアクションがキャンセルされたというランタイムエラー2501が発生します。ここにコードがあります。
これも私の手順の終わりなので、すべての重要なことが起こって以来、ここでエラーが起きたかどうかは気にしません。私はちょうど彼らがそれを見るならば、どこかで猿が跳ねるだろうと知っています。このエラーを処理する方法はありますか? On Error Resume Nextはデバッグが将来悪夢になるため、オプションではありません。私はTry/Catchのようなものを探しているようだが、私はVBAがそれをサポートしているとは思わない。
On Error GoToが何をしているかを調べる必要がありました。これは完璧です!ありがとう! – mandroid
大歓迎です。私は、ジャンプベースのジャンプではなく、ローカライズされたエラー処理テクニックを使用する方が現実的だと思います。大文字小文字のステートメントへのルーチンの最後にジャンプし、次に別の場所にジャンプして続行するのではなく、その場所で予想されるエラーを処理します。だから、VBはスパゲッティコードを宣伝していると非難されています。 – Todd
On Error Resume Nextは非常に危険です。一度に複数のコード行に使用してはならず、直ちにqithをオフにしてください。エラーが発生すると0になります。この状況が発生したことを知っている特定のエラー番号をトラップし、その特定のエラーを破棄する方がはるかに優れています。上記のコードでは、予期しないエラーが発生した場合は無視しますが、アドバイスを受けた場合は、ユーザーに報告されます(または適切に処理されます)。 –