マクロの実行は遅いが、ステップは速い(Microsoft Excel)
フレドリックは、マクロで抱えていた問題について書いています。彼がF8を使用してVBエディターでマクロを実行している場合(マクロをステップスルー)、わずか数分で完了します。彼がマクロを完全に実行すると、実行に永遠にかかるようで、実行に20分以上かかることがよくあります。 Fredricのワークブックは大きい(46 MB)にもかかわらず、2つの実行方法の時間差は面倒です。
このような問題は困惑する可能性があり、理解するために多くの場合、強力な分析が必要になります。まず、マクロに「タイマーコード」を追加することをお勧めします。時間値を保存する小さなルーチンと、その保存された値を現在の時間と比較して差を表示する別のルーチンを追加します。分析するコードのセクションの先頭で、最初のルーチンを呼び出します(これにより開始時間が節約されます)
次に、コードのセクションの最後で、2番目のルーチンを呼び出します。
このようにして、コードのどの部分の実行に最も時間がかかっているかを判断できます。これらは次に焦点を当てるコードセクションであるため、非常に時間がかかっていることを理解できます。
もう1つ確認すべきことは、マクロの先頭に次の2行を追加することです。
Application.ScreenUpdating = False Application.EnableEvents = False
これらは画面の更新をオフにし、実行中のマクロの速度を低下させ、イベントを無効にする可能性があります。この最後の行は、ワークシートのマクロによって行われた変更がExcelの再計算ルーチンをトリガーしないように含まれています。マクロがワークシートのデータに多くの変更を加えており、変更のたびに完全な再計算がトリガーされる場合、このような大きなブックでは、再計算を行うだけで多くの時間を費やすことができます。マクロの最後で、追加した2行の効果を逆にします。
Application.EnableEvents = True Application.ScreenUpdating = True
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2436)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。