【ExcelVBA】手動計算・再計算・自動計算を設定する方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで数式を再計算する方法を知っていますか?

手動計算に設定しているシートを再計算してからデータを使いたいケースはよくあります。

そこで今回は、

  • 数式を手動計算にする理由とは
  • 手動計算・再計算・自動計算する方法とは
  • 「毎回再計算をするのが大変」と感じる方向けのおすすめ情報

といった基礎的なことから、応用的な方法まで、徹底的に解説します!

数式を手動計算にする理由とは

まず、数式を手動計算にする理由について解説します。

Excelでは初期設定でセルの計算が自動計算になっています。

そのため、セルに値が書き込まれると「全てのセルに対して自動で再計算をする」ため、値を入れてすぐに結果を確認できるわけですね。

データ・数式を使いこなしてデータ集計・分析を使うExcelですが、計算された結果を使うことがほとんどなので、自動計算のままExcelを使っている人が多いです。

では、手動計算にするのはどのようなケースでしょうか。

自動計算は、リアルタイムに計算結果を反映してくれるので便利ですが、逆に言うと「全て必ず再計算してしまう」ため、数式が重たいセルが多いと全ての計算が終わるまでに時間がかかってしまいます。

セルに値を書き込むだけで数秒かかってしまうときもあるため、Excelが使いにくくなる原因になってしまいます。

そのため、「手動計算に変更してExcelを操作し、計算結果を使いたいときだけ再計算する」といった流れで操作する方が、速くExcelを操作することができます。

このような場合、「手動計算 + 再計算」を使います。

手動計算・再計算・自動計算する方法とは

次に、具体的な設定方法について解説します。

手動計算に設定 → 必要な時だけ再計算 → 処理が終わったら自動計算に戻す」の流れで使うケースが多いため、3つの方法を合わせて覚えておくのがおすすめです!

使い方は次のとおりです。

使い方:

Sub Test()
  '画面更新停止
  Application.Calculation = xlCalculationManual     '手動計算
 
 
  'メイン処理********************************
  'セルの値を使って計算したいときのみ再計算実行
  Application.Calculate 
  ‘*****************************************
 
  '画面更新再開
  Application.Calculation = xlCalculationAutomatic  '自動計算
 
End Sub

「Application.Calculation」で手動計算・自動計算をそれぞれ「xlCalculationManual」「xlCalculationAutomatic」で指定することができます。

処理の最初に「Application.Calculation = xlCalculationManual」を入れて手動計算にし、処理の最後に「Application.Calculation = xlCalculationAutomatic」で自動計算に戻しているわけですね。

メイン処理の中でセルの計算結果を使いたいときだけ、直前に「Application.Calculate」を書くことで再計算をしています。

このように、「手動計算 → 再計算 → 自動計算」の流れをセットで覚えておけば、処理の速度を速く保ったまま処理を動かすことができるので、とてもおすすめです!

ちなみに、再計算する方法はCalculateメソッドを含めて2つあります。

それぞれ以下のような違いがあります。

  • Calculateメソッド  :ワークシート・セル範囲を指定した再計算が可能
  • CalculateFullメソッド:全てのデータを再計算

ワークシート、セル範囲を指定して再計算する場合は、次のように書きます。

ワークシート・セル範囲を指定して再計算する方法:

'Sheet1を再計算
Worksheets("Sheet1").Calculate

'A1:B10の範囲を再計算
Range("A1:B10").Calculate

計算に使いたいデータがシートをまたいで複数ある場合はCalculateFullメソッド、データの範囲が少ない場合はCalculateメソッドのように使い分けるのがおすすめです!

毎回再計算をするのが大変だと感じた方へ

ここまで読んだ方で、次のように思った方もいるのではないでしょうか。

手動計算 → 再計算 → 自動計算の流れでやれば高速化できるのはわかったけど、使うタイミングとか大変そう・・・使いこなせるかな・・・

確かに、「手動計算 → 再計算 → 自動計算」の流れで処理が作れるようになると、処理を高速化できるのは事実です。ただ、それで処理自体がわかりづらくなってしまっては元も子もないですよね。

そもそも、手動計算にする理由は「Excelの数式が重たく自動計算に時間がかかるから」です。

そのため、「Excelの重たい数式を速く動くように修正して、常に自動計算で処理を動かす」というのも一つの手です!

  • 行全体・列全体を指定している数式がないか?
  • ある場合は、範囲を少し抑えて指定できないか?
  • 数式ではなく、VBAの処理に置き換えることで数式を軽くできないか?

といった方法で、Excelの数式は軽くすることができます。

「手動計算 → 再計算 → 自動計算」を自分で作っていくのが難しそう・・・と思った方は、数式を軽くできいないか考えみてくださいね!

合わせて覚えておくと便利な高速化対応について

今回は「手動計算 → 再計算 → 自動計算」の流れで処理を高速化する方法を解説しましたが、他にも覚えておくと便利な高速化テクニックはたくさんあります。

以下記事で高速化テクニックについて詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】処理の実行時間を高速化する方法を徹底解説!
更新日 : 2019年8月28日

まとめ

今回は、VBAで手動計算・再計算・自動計算する方法について解説しました。

Excelの処理を軽くすることができるので、覚えておくととても便利です!

使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。