フレドリックは、マクロで抱えていた問題について書いています。彼がF8を使用してVBエディターでマクロを実行している場合(マクロをステップスルー)、わずか数分で完了します。彼がマクロを完全に実行すると、実行に永遠にかかるようで、実行に20分以上かかることがよくあります。 Fredricのワークブックは大きい(46 MB)にもかかわらず、2つの実行方法の時間差は面倒です。

このような問題は困惑する可能性があり、理解するために多くの場合、強力な分析が必要になります。まず、マクロに「タイマーコード」を追加することをお勧めします。時間値を保存する小さなルーチンと、その保存された値を現在の時間と比較して差を表示する別のルーチンを追加します。分析するコードのセクションの先頭で、最初のルーチンを呼び出します(これにより開始時間が節約されます)

次に、コードのセクションの最後で、2番目のルーチンを呼び出します。

このようにして、コードのどの部分の実行に最も時間がかかっているかを判断できます。これらは次に焦点を当てるコードセクションであるため、非常に時間がかかっていることを理解できます。

もう1つは、マクロの先頭に次の2行を追加することです。

Application.ScreenUpdating = False Application.EnableEvents = False

これらは画面の更新をオフにし、実行中のマクロの速度を低下させ、イベントを無効にする可能性があります。この最後の行は、ワークシートのマクロによって行われた変更がExcelの再計算ルーチンをトリガーしないように含まれています。マクロがワークシートのデータに多くの変更を加えており、変更のたびに完全な再計算がトリガーされる場合、このような大きなブックでは、再計算を行うだけで多くの時間を費やすことができます。マクロの最後で、追加した2行の効果を逆にします。

Application.EnableEvents = True Application.ScreenUpdating = True

マクロの実行中は、自動計算をオフにすることもできます。そうすることで、マクロが物事を移動したり、データを操作したりしているときに、Excelが中間結果を計算しようとしないようにします。自動計算をオフにするには、マクロの先頭で次の行を使用します。

Application.Calculation = xlCalculationManual

マクロがワークシートの計算情報に依存していない場合にのみ、マクロの自動計算をオフにすることをお勧めします。オフにした場合は、マクロの終わり近くに次の行を配置することで、後で自動計算をオンに戻すことができます。

Application.Calculation = xlCalculationAutomatic

ある読者は、Excelワークシートでマクロを実行しているときに別のアプリケーションに焦点を当てることを提案しました。たとえば、メモ帳を開いて、そのウィンドウをアクティブにします。 Excelがアクティブでなくなると、マクロは大幅に高速化されます。試すもう1つのオプションは、アクティブなExcelワークシートではなく、マウスポインタをタスクバー領域に移動することです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(818)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。