EXCEL VBA 指定したセル・指定したシートのみを再計算させる・特定のセルの計算(Calculateメゾット)

 

 

EXCEL VBA 指定したセル・指定したシートのみを再計算させる・特定のセルの計算(Calculateメゾット)

 

 

 ●はじめに

今回説明するのは、指定したセル・指定したシートのみを再計算する方法を説明いたします。ワークシートに大量の計算式が登録されていると全体的に処理が遅くなるので、指定したセルや特定のワークシートのみを再計算させる仕組みにする事により、処理全体を早める事ができます。ここでは、3つのパターンの再計算させる方法を順番に説明いたします。①指定のセルだけ再計算させる方法②指定したシートのみ再計算させる方法③EXCEL全体を再計算させる方法を説明いたします。

 

 

●【EXCEL VBA 高速化 描画・監視・自動計算停止・(画面・更新・停止)】については、下記を参照して下さい】

EXCEL VBA 高速化 描画・監視・自動計算停止・(画面・更新・停止) (テクニック)

●【Worksheet.Calculate メソッド (Excel))、下記を参照して下さい】(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.calculate(method)

 

 

 

 ●書式の説明

● Calculateメゾットを利用するには、下記の通りに設定を行います。
・Calculateメゾットは、再計算が手動の時に、セル範囲に登録されている数式を再計算させる時に使用したり、特定のシートに対して再計算を実行させる時に使用します。

【Calculateメゾットを利用手順として】
① 「Application.Calculation = xlCalculationManual」・・で【再計算を手動にしてセルの数値等を変更しても計算しないように設定します。
② セル「C8:C9」に数値を代入します。①で再計算を止めているので、セル「D8:D9」に計算式が登録されていても計算されません。
セル「D8」に登録されている数式は「=B8*C8」
セル「D9」に登録されている数式は「=B9*C9」
③ Range(“D8:D9”).Calculate ‘セル(D8:D9)を再計算する。ここで指定したセルに対して再計算をを実行します。
セル「D8」が再計算され結果【280,000】が計算される 「単価140,000×2個数」
セル「D9」が再計算され結果【280,000】が計算される 「単価140,000×2個数」
④ 「Application.Calculation = xlCalculationAutomatic」・・で再計算を自動に戻します。最後に、この処理を登録しないと、計算方法が手動計算のままとなります。

●【Calculationプロパティ】の説明

Application.Calculation = xlCalculationManual     ・・・・再計算を手動にする

Application.Calculation = xlCalculationAutomatic   ・・・・再計算を自動にする

 

●【Calculateメゾット】の活用パターン

計算対象(設定)説明(内容)
Range.Calculate指定したセル・セル範囲のみ計算
Worksheet.Calculate指定したワークシートのみ計算
Application.CalculateEXCEL全体のすべてのブックを計算

 

【使用例(プログラム)】

 

【実行結果】

 

【注意点】
【Calculateメゾットを使うにあたり、Calculationメゾットも同時に利用する必要があります。注意点として以下の2点です。

①「Application.Calculation = xlCalculationManual」をプログラムの冒頭に登録しないと、Calculateメゾットで個別再計算しても自動計算となるので、必ず登録する。
②「Application.Calculation = xlCalculationAutomatic」をプログラムの最後に登録しないと、Calculateメゾット再計算処理を行う必要があるので、最後は、再計算を自動に戻す。

※処理したい内容に応じて設定を行って下さい。

 

 

 

 

EXCEL VBA 指定したシートのみを再計算させる・特定シートを再計算(Calculateメゾット)

 

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、指定シートのみを再計算させるサンプルプログラムです。EXCELファイルのブック全体に計算式が大量に設定されていると、全体的にEXCELの動作が遅くなります。処理に必要な、指定シートのみ実行する事で、処理の高速化を図ることも出来ます。処理条件により一部のシートのみを計算させたい時に利用すると良いと思います。それでは、サンプルプログラムを交えて順番に説明いたします。

●各ワークシートのE列に計算式が登録されている。


●InputBoxが表示され、再計算するワークシートを選択します。今回は、3の埼玉支店のみが【再計算】されます。
1:は、「東京支店」2:は、「神奈川支店」3:は、「埼玉支店」

 

 

【プログラムの流れ】

※プログラムの実行前に、各ワークシートの個数を変更します。
① 再計算したいワークシートを選択します。(InputBoxにて数値を選択:1:東京支店・2:神奈川支店・3:埼玉支店)
② 再計算を手動に切り替えます。
③ ①のInputBoxにて入力した数値に応じて、選択したワークシートを再計算します。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● Calculate02(サンプルプログラム)

 

 

 

 

●実行前~実行後 ※各ワークシートの個数を変更します。プログラム実行して、再計算するワークシートをInputBoxにて選択します。今回は”3”を選択して、埼玉支店のシートを再計算しました。
(画面クリックして拡大)

 

 

EXCEL VBA 指定したセル範囲のみ再計算させる・特定セルの再計算(Calculateメゾット)

 

 

 ●プログラム説明 (サンプル②)

下記のサンプルプログラムは、指定したセル範囲のみ再計算するサンプルプログラムです。1つのワークシートに3つの表があります。①~③の指定した表ごとに再計算を実行します。


※ プログラムを実行して、InputBoxが表示されるので、【1】は、東京支店を再計算・【2】は、神奈川支店を再計算・【3】は、埼玉支店を再計算します。
下図では、【1】東京支店を選択したので、東京支店の表のみ【単価】×【個数】の再計算を行ったので、E列(E4:E12)に計算結果が表示されました。

 

【プログラムの流れ】

① 再計算させる表を1~3の数値でInputBoxへ入力します。
② InputBoxで入力した数値に応じて表のセル番号を把握します。
③ 入力した値が1~3の範囲内か判定する。
④ 入力値が1~3の範囲の場合、メッセージ表示にて”●●支店を再計算します。”と表示します。
表の選択範囲を取得して、その範囲を再計算します。
⑤ 入力値が1~3以外の場合は、何もしない。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● Calculate03(サンプルプログラム)

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、再計算させたい表番号(1~3)を入力します。入力した表が再計算されて合計値が正しく表示されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。