Excel でコード (実行に 3 ~ 4 分かかります) を実行し、Excel またはユーザーフォームで何かをクリックすると、フリーズし、白くなり、ほとんどクラッシュします...実行の準備ができたら、すべてが再び正常になります.
もちろん、実行中にExcelで作業できないのは正常ですが、Excelの「クラッシュ」を回避するにはどうすればよいですか?
この種の問題を防ぐ最善の方法は、コードをベンチマークして、時間がかかっている原因を特定することです。コードの実行に 3 分以上かかる場合は、ほぼ確実に最適化の余地があります。
必要な手順は次のとおりです。
注意が必要なパフォーマンスの遅い悪名高いアンチパターンは、ループ中に何かを選択することです。
Excel が応答しなくなる無限ループがないことを確認したら、コードを最適化してください。
これはvba-excel コードの最適化に関する非常に興味深い読み物であり、いくつかのプラクティスは、私が作成した大きくて時間のかかるモジュールに実際に影響を与えました。それが役に立てば幸い。
あなたがする必要があるのは、進行状況バーのように、Excel UI をオーバーレイするカスタム UserForm を作成することです。また、modal form
. modal form
は実行を停止するため、使用できません。