Excel VBAアプリが「コードの実行が停止しました」というメッセージが表示されて自発的に停止する


151

私がウェブで見ることができるものから、これはかなり一般的な不満ですが、答えはまれであるようです。問題はこれです:

私たちは多くのユーザーのマシンで完璧に動作する多くのExcel VBAアプリを持っています。ただし、1つのマシンでは、特定のコード行で停止します。それは常に同じ行ですが、それらの行は互いに共通点がないようです。

停止後にF5(実行)を押すと、アプリは続行するため、ブレークポイントが追加されたように見えます。メニューから「すべての休憩を削除」を選択し、さらに休憩を追加して削除しようとしました。

以前、単一のアプリでこの問題が発生しました。モジュールからコードを切り取り、コンパイルしてから再び貼り付けるなどして、それを「つなぎ」ました。

現在、問題は単一の.xlsではなくExcel自体に関連しているように見えるため、これを管理する方法が少しわかりません。

どんな助けでもありがたいです:)

おかげで、

フィリップウィッティントン


2
ユーザーが処理の途中でエスケープを押していますか?または、エスケープキーを送信している他のアプリはありますか?
shahkalpesh、2010年

1
[ すべてのブレークポイント削除]を選択した後、VBAプロジェクトを再コンパイルして保存しましたか?以前に削除したブレークポイントが依然としてブレークを引き起こしているというWord VBA内の関連する問題を確認しました。
Dirk Vollmar、2010年

実行中に何も処理されていません、shahkalpesh。Divo-ありがとう、私はそれらをこの順序で正確に試していないかもしれません。今すぐそうします...
Phil Whittington 2010年

divoのコメントに加えて、関連する行とデバッグを停止する行をコメント化すると便利です。コメントを外して、コードを(再度)再コンパイルできます。
Fionnuala、2010年

そして、私は言及するのを忘れていました:実際に再構築をトリガーするには、通常、行を変更してから、カーソルを次の行に移動して、ソースコードに変更のフラグを付けます(たとえば、変更、カーソルを下に移動、移動カーソルを上に移動し、手動で変更を元に戻します)
Dirk Vollmar、2010年

回答:


404

2つ目の解決策を見つけました。

  1. ポップアップの「デバッグ」ボタンを押します。
  2. Ctrl+をPause|Break2回押します。
  3. 再生ボタンを押して続行します。
  4. 完了したらファイルを保存します。

これが誰かを助けることを願っています。


12
+1:うわー、この投稿は私を苦痛の世界から救いました。奇妙な問題のための非常に予期しない解決策。[Ctrl + Break]を2回押して続行した後、ファイルを保存しました。その後、ファイルを閉じて再度開いても問題は発生しなくなりました。
dbenham 2012年

28
答えが賛成に値するならば、これはそれです。すばらしい答えです。
The_Barman 2013年

4
これは私に大いに役立ちました。この回答は1000票に値します。過去4〜5日間、この問題に悩まされました。これは完全に機能しました。
demouser123 2014

25
なぜこれが機能するのか誰か知っていますか?それともどこから来たのですか?これは魔法ですか?
ZX9 2015

4
2017年も引き続きサポートをお願いします。ありがとうございます。
2017

16

この問題は、Office / Windows内の奇妙な癖から生じます。

同じVBAコードを開発し、過去数日間に何百回(文字通り)実行した後、私はたった今この問題に遭遇しました。唯一異なる点は、この厄介な問題が発生する直前に、偶然にVBAコードの実行を非正統的な方法で終了してしまったことです。

私はすべての一時ファイルを消去し、再起動しました...このすべての後でコードを再度実行したとき、最初のループに入る前に、まだ問題が発生しました。それは理にかなって「し、[Ctrlキー+ブレーク]を2回押すと、この後に停止せずに継続することができ、ポップアップでボタン『』を押して」デバッグオフィス/ Windowsの組み合わせで何かが実行をリリースしていないので。行き詰まっています。

冗長なCtrl + Breakアクションは、おそらく長引く実行を解決します。


14

1つの解決策はここにあります

この問題の解決策は、マクロの最初の行に「Application.EnableCancelKey = xlDisabled」というコード行を追加することです。これにより問題が修正され、エラーメッセージ「Code実行が中断されました。」

しかし、このコード行を挿入した後は、Ctrl + Breakを使用できなくなりました。したがって、それは機能しますが、大きくはありません。


おかげで、スタン-時間のプレッシャーにさらされているだけで実行したい場合、それは確かに解決策です!非常に便利。
Phil Whittington、

1
同じ実行で再度有効にするには、に設定しxlInterruptます。(コードの実行が終了すると、自動的に再度有効になります。)他の答えがうまくいきましたが、最悪の場合、これは一時的な修正として使用できます。Application.EnableCancelKeyの詳細
Kodithic 2015

2
正解-唯一の正解-は上記です。「Application.EnableCancelKey = xlDisabled」を含むコード行を挿入して、問題は別の行に移動するだけです。多くの場合、新しい「ブレークポイント」は、挿入した行とまったく同じです。私があなたの答えに反対票を投じない唯一の理由は、私が過去10年間、繰り返し自分自身でそれを使用することに頼ったことです。
Nigel Heffernan、2015

6

マクロが実行されていないときにctrl + breakを押すと、問題が解決しました。


3

私は通常の修正を試みます:-VBAコードでRob BoveyのVBAコードクリーナーを実行します-ユーザーPCのすべてのアドイン、特にCOMおよび.NETアドインを削除します-すべてのユーザーの.EXDファイルを削除します(MSoft Update非互換性)-Excelを実行しますユーザーシステムの検出と修復-ユーザーの.xlbファイルのサイズを確認します(20〜30Kにする必要があります)-再起動してからすべてのユーザーの一時ファイルを削除します


2

皆様のご意見に感謝いたします。この問題は、コントロールパネルの[修復]を選択することで解決しました。これは、OfficeのネイティブCOMコンポーネントの一部を明示的に再登録し、REINSTALLが行わないことを行うと思います。後者はチェックリストを通過するだけで、すでにインストールされている場合はそこにあるものを受け入れることを期待しています。次に、ユーザーのマシンでCOM相互運用用に自分の.NET dllを登録する際に別の問題が発生しました(これは他のマシンでも機能しますが)。これはMicrosoftではなく私のエラーだと思います。改めて感謝します。本当に感謝しています。


2

1つの複雑なExcel VBAアプリの開発中にこの問題に何度か遭遇しました。時々ExcelはVBAオブジェクトをかなりランダムに壊し始めました。そして、唯一の救済策はマシンを再起動することでした。再起動後、Excelは通常正常に動作し始めました。

この問題の解決策として考えられるのは、マクロが実行されていないときにCTRL + Breakを1回押すことです。多分これはあなたにも役立つかもしれません。


2

マクロが実行されていない状態で右隅の赤いXのワークブックを閉じようとするだけで、「コードの実行が中断されました」というfoobar.xlsm(マクロが有効な)ワークブックでExcel 2007を使用してもこの問題が発生しましたすべて、または「初期化」フォーム、ワークブック、またはワークシートマクロのいずれか。私が得たオプションは「終了」または「続行」でした。デバッグは常にグレー表示されていました。以前の投稿者が提案したコントロールパネル->プログラムと機能->右クリック "Microsoft Office Proffesional 2007"(私の場合)->変更->修復。

これで問題は解決しました。これは、MSの更新直後に発生したことを追加する可能性があります。また、Microsoftから「Team Foundation」と呼ばれるExcelのアドインを見つけました。


1

以下の理由により、スタンの 回答2に詳細を追加したいと思います。

  • 私はこの問題に数十回以上直面し、プロジェクトの状況に応じて、スタンのブードゥーマジックの答え#1または#2 を選びました。私は再びそれに直面し続けたとき、私はなぜそれが最初の場所で起こるのかについてさらに疑問に思うようになります。

  • Macユーザーにも回答を追加したいと思います。

  • これらの考えられる両方の回答には制限があります。

    • コードが保護されている(そしてパスワードがわからない)場合は、1番目の回答は役に立ちません。
    • コードが保護されていない場合、回答2ではコードをデバッグできません。

  1. 以下のいずれかの理由で発生する可能性があります。

    • オペレーティングシステムがExcelプロセスにシステムリソースを割り当てていません。(解決策:オペレーティングシステムを起動するだけです-成功率は非常に低いですが、何度も動作することがわかっています)

    • Pコードは、(。NETより前の)Visual Basicで使用されていた中間コードであるため、VBAでも引き続き使用されます。実行速度は遅くなりますが、実行ファイルをよりコンパクトにできます。なぜ私はPコードについて話しているのですか?複数の実行と大きなファイルの間、またはソフトウェアのインストール(Excel)が原因で破損することがあるからです。Pコードが破損した場合。コードの実行は中断され続けます。解決:これらのケースでは、コードが破損し始めたと想定され、将来的にはExcelブックも破損し、「Excelファイルが破損しているため、開くことができません」などのメッセージが表示される可能性があります。したがって、簡単な解決策として、要件に応じて回答1または回答2を利用できます。ただし、腐敗の兆候を決して無視しないでください。コードモジュールをメモ帳でコピーし、モジュールを削除して、ブックを保存して閉じ、Excelを閉じることをお勧めします。次に、ブックを再度開き、前にメモ帳にコピーしたコードを使用して新しいモジュールの作成を開始します。

  2. Macユーザーは、以下のオプションのいずれかを試してください。それらは、システムアーキテクチャ、つまりOSやOfficeのバージョンに応じて確実に機能します

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc+ Esc(2回続けて押す)

マクロは現在のタスクを直ちに終了して実行を一時停止するため、上記のキーの組み合わせを使用して中断モードになります。これはステップ2の置き換えです。

  1. 解決策:回答#1回答#2の使用の制限を克服するために、エラーコードが18の場合、エラーハンドラーのステートメントとxlErrorHandler一緒に使用 Resumeします。次に、割り込みがエラーとしてトラップされ、実行中のプロシージャに送信されます。 On Error GoToステートメントで設定されたハンドラ。トラップ可能なエラーコードは18です。現在の手順は中断され、ユーザーは手順をデバッグまたは終了できます。マイクロソフトでは、エラーハンドラーに再開ステートメントがある場合はこれを使用しないように警告しています。それ以外の場合、エラーハンドラーは常に同じステートメントに戻ります。これは、コード実行の不要で意味のない中断にまさに必要です。


0

私の現在の評判は、これをコメントとして投稿することをまだ許可していません。Stansソリューションでデバッグモードに入り、Ctrl + Breakを2回押して再生し、保存すると問題が解決しましたが、予期しない2つのねじれがあります。

  1. 私のプロジェクト構造はパスワードで保護されているため、デバッグモードに入るには、最初に開発者モードに切り替え、プロジェクト構造をクリックしてパスワードを入力する必要がありました。

  2. 私のプロジェクトはテンプレートファイル(.xmtl)です。前のファイル名の最後に「1」が付いた.xmlとして開くダブルクリックでファイルを開きました。Stansの指示に従ってバグを修正し、それを... 1.xmlファイルとして保存しました。次に、テンプレートをもう一度(今回はテンプレートとして)開き、同じバグ修正をそのファイルに適用したいのですが、バグはなくなりました。私はこのファイルを変更しませんでしたが、それでもマクロの実行にバグはありませんでした。これは、バグが実際にはファイルではなく、Excelの(非表示の)設定にあることを意味します。


-1

問題は今やExcel自体に関連しているようです

再インストールしてパッチを当ててください:)それ以外の場合、それを伝えるのは難しいです。


再インストールを試みましたが、サポート担当者が再起動した後、ユーザーは再起動を忘れました。Officeの再インストールを回避しようとしていますが、これは避けられないかもしれません...ありがとう
Phil Whittington 2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.