vba 自動計算をオフ(またはオン)にする

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 8月 1, 2022

セルの値を更新するたびに、Excelはワークブックを再計算する処理を行います。Excelで直接作業する場合、99.9%の確率でこの処理を行いたいものです(ただし、非常に大きなワークブックを扱う場合は例外です)。しかし、これはVBAコードの速度を著しく低下させる原因でもあります。マクロの開始時に計算方法を手動に変更し、マクロの終了時に計算方法を自動に戻すのは良い取り組みです。ワークブックを再計算する必要がある場合は、手動でExcelに計算するよう指示することもできます。

自動計算をオフにする

xlManualに設定することで、マクロによる自動計算をオフにすることができます。以下のVBAコードを使用します。

Application.Calculation = xlManual

自動計算を元に戻す

自動計算を元に戻すにはxlAutomaticに設定します。

Application.Calculation = xlAutomatic

プロシージャの一番最初に自動計算を無効にして、最後に自動計算を再度有効にすることをお勧めします。このような感じになります。

自動計算を無効にするマクロの例

Sub Auto_Calcs_Example()
    Application.Calculation = xlManual

    '処理を記述する



    Application.Calculation = xlAutomatic
End Sub

vba disable automatic calculations jp

手動計算

自動計算が無効の場合、Calculateコマンドで強制的にExcelに再計算をさせることができます。

Calculate

また、個々のワークシートだけを再計算するように指示することもできます。

Worksheets("Sheet1").Calculate

また、VBAで範囲だけを再計算することもできます(VBAの計算方法についての記事を読む)。 以下は、マクロの中の様子です。

Sub Auto_Calcs_Example_Manual_Calc()
    Application.Calculation = xlManual

    '処理を記述する


    '再計算
    Calculate
    
    'さらに処理を記述する


    Application.Calculation = xlAutomatic
End Sub

VBAの設定 – コードの高速化

コードの高速化が目的なら、この他の設定も調整することを検討すべきです。 画面の更新を無効にすると、速度に大きな差が出ます。

Application.ScreenUpdating = False

また、ステータスバーをオフにすることでも、若干の違いが出てきます。

Application.DisplayStatusBar = False

ワークブックにイベントが含まれている場合、プロシージャの開始時にイベントを無効にする必要があります(コードのスピードアップと無限ループを防ぐためです!)。

Application.EnableEvents = False

最後に、Excelが改ページを再計算しようとすると、VBAコードが遅くなることがあります(注:すべてのプロシージャが影響を受けるわけではありません)。 DisplayPageBreaksをオフにするには、次のコードを使用します。

ActiveSheet.DisplayPageBreaks = False

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples