Excel のパフォーマンスを最適化したい方、VBA スクリプトの実行速度を向上させたい方への記事です。Excel VBA での再計算プロセスを制御するメソッドの詳細と、その効果的な活用方法Calculateについて大量のデータ処理や複雑な関数を高速に処理する秘訣を学びましょう。
再計算モードについて
自動再計算:セルの内容が変わるたびにExcelは自動的に再計算します。
Application.Calculation = xlCalculationAutomatic
手動再計算:再計算を停止します。手動で再計算を行う必要があります。大量のデータ変更を行うVBAのマクロを実行する前にこのモードで実行すると、パフォーマンスが向上することがあります。
Application.Calculation = xlCalculationManual
再計算のトリガー
全てのシートを再計算:ワークブック全体の再計算を行います。
Application.Calculate
特定のシートのみを再計算:指定したワークシートのみを再計算します。
Worksheets("Sheet1").Calculate
特定の範囲を再計算: 指定した範囲のセルのみを再計算します。
Range("A1:D10").Calculate
再計算をいっせいにするコードの書き方
大量のデータをVBAで書き換えたりする場合にセルごとに入力されると毎回、再計算されることになります。データ量が多い場合には処理に時間がかかってしまいます。
セルの値を変更する前に自動計算の停止をさせます。すべてのセルの値を変更し終わった後に再計算の指示をだします。そうすることにより処理速度が早くなります。
今回の例では「Application.Calculation = xlCalculationAutomatic」を使用しましたが「再計算のトリガー」で紹介したシートのみの再計算や範囲指定の再計算などでも良いでしょう。
Application.Calculation = xlCalculationManual ’自動再計算を停止させます。
'~色々な処理コード~
Application.Calculation = xlCalculationAutomatic '自動計算を開始させます。ここで一気に計算処理をさせます。