8

(別のマシンで) 作成したマクロが、突然、コンピューターで異常な動作をします。Excel 2010環境でコードを書き、同じコードをステップ実行しようとしています。

そうするたびに、数行の後、残りのコードがすぐに実行されます。ブレークポイントを設定すると停止します。場合によっては、再び自動実行する前に、さらに数行進むことができます。

何を与える?ウェブ上で答えが見つかりませんでした... したがって、Stackoverflow での最初の投稿です。

ヒントをありがとう!これは私の人生を困難にしています。

更新: 元のプログラミング環境に戻ったので、コードのステップ実行に問題はありません。だから、それは私のExcel設定にあるに違いありません! しかし、それが何であるかはわかりません。

4

8 に答える 8

5

最初はF8ボタンが期待どおりに機能するとおっしゃっていたので、私の考えのほとんどはテーブルから取り除かれました.
これについて説明することはできませんが、一時的な「回避策」を提供できるかもしれません。これが私にできる最善の方法です。
各行をクリックしてから CTRL+F8 (カーソル位置まで実行) を適用すると、F8 をシミュレートできます。カーソルはブレークポイントとして機能し、すべての行にブレークを配置/削除するよりも面倒ではありません。
少し手間がかかりますが、同じくらい高速です (少なくとも通常のデスクトップでは)。デバッグ中のフラストレーションを少しでも軽減できることを願っています!

于 2012-07-20T08:54:18.893 に答える
5

このソリューションここで参照されていることがわかりました。解決策は、レジストリを変更することです (ソースから取得):

レジストリの変更は RPC デバッグに影響を与えます。詳細については、Microsoft の Web サイト ( RPC デバッグを使用した COM クライアントとサーバーのデバッグ) を参照してください。

1.エクセルを閉じる

2.レジストリ ファイルのバックアップを作成し、レジストリを開きます。Microsoft の Web サイトに手順が記載されています。

3.該当するレジストリ キーに移動します。

  • 64 ビット ウィンドウ上の 32 ビット Office の場合、レジストリ キーに移動します: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VBA
  • 32 ビット Windows 上の 32 ビット Office の場合は、次のレジストリ キーに移動します: KEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\VBA
  • 64 ビット Windows 上の 64 ビット Office の場合、次のレジストリ キーに移動します: KEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\VBA

4.右側のウィンドウを右クリックし、[新規作成] をクリックします。

5. [DWORD] をクリックします (下のスクリーン ショットでは、DWORD は 64 ビット コンピューターで実行されている 32 ビット Office 用です)。

6. DWORD に DisableOrpcDebugging7 という名前を付けます。

7.DWORD を右クリックし、[変更] をクリックします。

8.[値] を 1 に変更し、[OK] をクリックします。

9.完成したDWORDがレジストリに表示されます

10.レジストリを閉じ、Excel を再度開きます。ここで F8 キーが正しく機能するようになり、コードをステップ実行します。

于 2015-12-30T17:10:53.700 に答える
2

最終更新: KeyRocket と呼ばれるバックグラウンドで実行していた、オフィス アプリケーションのキーボード ショートカットを記憶するのに役立つように設計された別のアプリケーションが、厄介な動作の原因であることが判明しました。これが他の誰かに役立つことを願っています!

そして最後に、提案してくれたみんなに感謝します!

于 2012-07-23T08:43:10.637 に答える
2

Word(Excelではない)2010でも同じ問題が発生しました。

上記の他の貢献者が言及したさまざまなことを試しました。たとえば、F8キーを何かに使用する可能性のある他のプログラムを閉じたり、干渉する可能性のある他のMS Office 2010アプリケーションを閉じたりしましたが、問題は頑固にそこにありました:私のVBAのある時点からコードの段階的な実行 (F8 キー) は無視され、手順全体が一度に実行されました。

次に、自分のコードで多くの実験を行いました。したがって、次のことがわかりました。私の場合、次のように外部プロシージャを呼び出したときに、望ましくない動作が正しく表示されました。

Application.Run MacroName:="OneProcedureOfMine"

この問題を回避するために、次のようにコードを書き直しました。

Call OneProcedureOfMine

とにかく、これはよりエレガントな方法です。そして、それは問題を解決しました。そのように呼び出された従属プロシージャを使用して、F8 はメイン プロシージャをきちんと処理し、各プロシージャはその中から呼び出されます。

于 2015-08-09T01:13:51.507 に答える