「vba 再計算 特定セルのみ」
「excel vba 再計算 一部のセル」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あることに気づきました。
特定のセル・一部のセルのみ再計算を行うVBA(Visual Basic for Applications)のコードを探している方による検索です。
ブックが重いときに計算方法を手動にすることがある
計算式が大量に含まれているような重いブックを扱うようなときに、リボンの[数式]タブ-[計算方法の設定]ボタンや、[Excelのオプション]ダイアログから計算方法を手動モードに設定しておいて、
必要に応じてショートカットキー[F9]などで再計算を行う、といったことが実務で行われることがあります。
そのような運用を行っているときに、再計算を少しでも速く終わらせるために、必要なセルの再計算だけをVBAから行うにはどのようなコードを書けばいいのか探していたのが、
「vba 再計算 特定セルのみ」
「excel vba 再計算 一部のセル」
といった検索キーワードでしょう。
アクティブセルのみ再計算を行うサンプルマクロ
以下のようなマクロでアクティブなセルのみ再計算を行うことができます。ActiveCell.Calculate
End Sub
VBE(Visual Basic Editor)のオブジェクトブラウザーで検索するとわかるとおり、Excelには再計算を行う「Calculate」という名前のメソッドが複数のオブジェクトに用意されています。
これらのCalculateメソッドのうち、RangeオブジェクトのCalculateを利用すれば、そのセルの再計算を行うことができます。
特定セルのみ再計算を行うサンプルマクロ
以下のようなマクロでB1:B5セルのみ再計算を行うことができます。Range("B1", "B5").Calculate
End Sub
RangeオブジェクトのCalculateメソッドですから、Rangeオブジェクトを取得するオブジェクト式の部分を変更すれば、さまざまな特定セルのみ再計算ができるわけです。
RangeオブジェクトのCalculateメソッドだけはFunctionプロシージャ
ところで、
この記事を書くためにオブジェクトブラウザーを眺めていて気付いたのですが、ApplicationオブジェクトやWorksheetオブジェクトのCalculateメソッドはSubプロシージャなのに、
なぜかここでご紹介したRangeオブジェクトのCalculateメソッドだけは、Functionプロシージャなのです。
何が返されるのかと気になり以下のようなコードを実行してみたのですが、
Dim tmp As Variant tmp = ActiveCell.Calculate
Stop
End Sub
Nullが返されるのですよ。
何なのでしょうね、これ。
- Newer:差込印刷で小数点以下の桁数を指定するー\# "0.00"
- Older:オブジェクトブラウザがより身近になった
Home » Excel VBA Rangeオブジェクト » 特定セルのみ再計算するExcelマクロ-Range.Calculate