Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 特定セル選択時にのみ再計算を行うイベントプロシージャ

特定セル選択時にのみ再計算を行うイベントプロシージャ

対象:Excel2007, Excel2010, Excel2013

「excel vba セルをアクテイブにした時に数式の再計算を実行する」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

実務では、大量の数式が含まれているようなブックを扱うときに、計算を自動ではなく手動に設定しておくことがあります。

自動計算が行われることによって処理が遅くなってしまうのを防ぐためです。

大量の数式が含まれているようなブックでは、自動計算をオフにしておいて、データの入力・編集が終わったら、ショートカットキー[F9]などで再計算を実行する、といった使い方をすることが実務ではあります。

[スポンサードリンク]

特定セル選択時に再計算を実行するイベントプロシージャ

「excel vba セルをアクテイブにした時に数式の再計算を実行する」
というのは、いずれかのセルをアクティブにしたときに、自動的に再計算を行うようにするVBA(Visual Basic for Applications)のコードを探している方による検索キーワードでしょう。
▼特定セルが選択されたときに再計算を実行するイベントプロシージャ
※A1セルが選択されたときに再計算をするイベントプロシージャ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
 ActiveSheet.Calculate
End Sub

上記のようなイベントプロシージャを、自動的に再計算させたいワークシートのイベントプロシージャとして作成してやれば、A1セルが選択されたときにだけ、そのシートの再計算が行われます。

イベントプロシージャの解説

再計算を実行しているのは、
 ActiveSheet.Calculate
の部分ですが、このWorksheetオブジェクトのCalculateメソッドを実行するだけの、Worksheet_SelectionChangeイベントプロシージャにしてしまうと、そのワークシートではセルを選択するたびに再計算が実行されてしまいます。

これを防ぐために、
 If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
というコードを
 ActiveSheet.Calculate
の前に入れて、A1セルが選択されたのでなければ、イベントプロシージャをExitするようにしています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 特定セル選択時にのみ再計算を行うイベントプロシージャ

「イベントプロシージャ」の記事一覧

検索


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

.