「excel vba セルをアクテイブにした時に数式の再計算を実行する」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
実務では、大量の数式が含まれているようなブックを扱うときに、計算を自動ではなく手動に設定しておくことがあります。
自動計算が行われることによって処理が遅くなってしまうのを防ぐためです。
大量の数式が含まれているようなブックでは、自動計算をオフにしておいて、データの入力・編集が終わったら、ショートカットキー[F9]などで再計算を実行する、といった使い方をすることが実務ではあります。
特定セル選択時に再計算を実行するイベントプロシージャ
「excel vba セルをアクテイブにした時に数式の再計算を実行する」というのは、いずれかのセルをアクティブにしたときに、自動的に再計算を行うようにするVBA(Visual Basic for Applications)のコードを探している方による検索キーワードでしょう。
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の使い方 » イベントプロシージャ » 特定セル選択時にのみ再計算を行うイベントプロシージャ