• ベストアンサー

Calculateイベントでセルを指定したい

Private Sub Worksheet_Calculate() を使ってイベントを利用していますが、特定のrangeだけで発生するイベントだけを使用したいと考えています。 このような使い方ができるのでしょうか。 例えば range("A1","C5") だけの範囲に発生するイベントを利用し 他の領域で発生する信号は無視したいのです。 よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>例えば range("A1","C5") だけの範囲に発生するイベントを利用し >他の領域で発生する信号は無視したいのです。 完全に無視する事は厳しいような気がします。 妥協できればの話ですが、 監視対象シートがSheet1だとします。 それと別のシート、Sheet2のセルに =Sheet1!A1 =Sheet1!C5 と監視対象セルへの参照数式を入れて、 このSheet2のシートモジュールにCalculateイベントを記述するわけです。 これでSheet1のA1,C5セルの数式が再計算された時のイベントが捉えられるかと思います。 ただ、Sheet1の関係ない行列の削除もしくは挿入した時もA1,C5セルは再計算されます。 使う関数によっても再計算が発生する事があります。 計算結果に変化がなくても、A1,C5セルの再計算イベントを捉える事ができるわけですから それはそれでいいのかもしれませんが。 また、別シートからSheet1を参照しているので、Sheet1の名前を変更した時や、オートフィルタ操作時など、 Sheet1の再計算は発生しなくても、Sheet2の再計算が発生し、Calculateイベントが走る事があります。 (他にもあるかもしれません。あまり深く検証してないです) もし、再計算発生、かつ計算結果が変化している事をトリガーにしたいという事なら Calculateイベントの内容を工夫すれば可能と思います。 Static変数やセル値に計算結果を記憶させて、次回イベント時に比較して差異があれば処理する...など。 他サイト過去ログですが参考になるかもしれません。 『calclcuiate を セル ごとでイベント発生させるには』 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200808/08080153.txt

VB0979
質問者

お礼

早速のご回答ありがとうございます。 別のsheetに乗り換えてイベントを監視する方法には 気がつきませんでした。 クリーンな回答恐れ入ります。

すると、全ての回答が全文表示されます。

関連するQ&A