Home » ExcelVBA Rangeオブジェクト » 特定セルのみ再計算するExcelマクロ-Range.Calculate

特定セルのみ再計算するExcelマクロ-Range.Calculate

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba 再計算 特定セルのみ」
「excel vba 再計算 一部のセル」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あることに気づきました。

特定のセル・一部のセルのみ再計算を行うVBA(Visual Basic for Applications)のコードを探している方による検索です。

ブックが重いときに計算方法を手動にすることがある

計算式が大量に含まれているような重いブックを扱うようなときに、リボンの[数式]タブ-[計算方法の設定]ボタンや、[Excelのオプション]ダイアログから計算方法を手動モードに設定しておいて、

特定セルのみ再計算するExcelマクロ

必要に応じてショートカットキー[F9]などで再計算を行う、といったことが実務で行われることがあります。

そのような運用を行っているときに、再計算を少しでも速く終わらせるために、必要なセルの再計算だけをVBAから行うにはどのようなコードを書けばいいのか探していたのが、
「vba 再計算 特定セルのみ」
「excel vba 再計算 一部のセル」
といった検索キーワードでしょう。

[スポンサードリンク]

アクティブセルのみ再計算を行うサンプルマクロ

以下のようなマクロでアクティブなセルのみ再計算を行うことができます。
Sub アクティブセルのみ再計算する()
 ActiveCell.Calculate
End Sub

VBE(Visual Basic Editor)のオブジェクトブラウザーで検索するとわかるとおり、Excelには再計算を行う「Calculate」という名前のメソッドが複数のオブジェクトに用意されています。

特定セルのみ再計算するExcelマクロ

これらのCalculateメソッドのうち、RangeオブジェクトのCalculateを利用すれば、そのセルの再計算を行うことができます。

特定セルのみ再計算を行うサンプルマクロ

以下のようなマクロでB1:B5セルのみ再計算を行うことができます。
Sub 特定セルのみ再計算する()
 Range("B1", "B5").Calculate
End Sub

RangeオブジェクトのCalculateメソッドですから、Rangeオブジェクトを取得するオブジェクト式の部分を変更すれば、さまざまな特定セルのみ再計算ができるわけです。

RangeオブジェクトのCalculateメソッドだけはFunctionプロシージャ

ところで、
この記事を書くためにオブジェクトブラウザーを眺めていて気付いたのですが、ApplicationオブジェクトやWorksheetオブジェクトのCalculateメソッドはSubプロシージャなのに、

特定セルのみ再計算するExcelマクロ

なぜかここでご紹介したRangeオブジェクトのCalculateメソッドだけは、Functionプロシージャなのです。

特定セルのみ再計算するExcelマクロ

何が返されるのかと気になり以下のようなコードを実行してみたのですが、

Sub RangeCalculateの戻りを確認する()
 Dim tmp As Variant

 tmp = ActiveCell.Calculate
 Stop
End Sub

Nullが返されるのですよ。
何なのでしょうね、これ。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 特定セルのみ再計算するExcelマクロ-Range.Calculate

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.