• ベストアンサー

エクセル Worksheet_Calculate

Worksheet_Calculate()  ですが、A:4 から h:4 だけ 反応する。 それ以外は、 Exet Sub で Calculate を 抜ける。 この範囲指定の方法は無いでしょうか 時間なら 下記で事足りるのですが If Format(Time, "hh:nn:ss") < Format("9:00:00", "hh:nn:ss") And Format(Time, "hh:nn:ss") Format("3:00:00", "hh:nn:ss") Then Exit Sub End If

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

こんばんは ブック起動時にA4~H4の値をグローバル変数に格納してCalculateイベント発生時に比較しては如何でしょうか '<<ThisWorkBookモジュール>> Option Explicit Private Sub Workbook_Open() v = Worksheets("Sheet1").Range("A4:H4").Value End Sub '<<標準モジュール>> Option Explicit Public v As Variant '<<シートモジュール>> Private Sub Worksheet_Calculate()   Dim i As Long, flg As Boolean   For i = 1 To 8     If Range("A4:H4").Item(i).Value <> v(1, i) Then       MsgBox Range("A4:H4").Item(i).Address & " に変化がありました。"     End If   Next   If flg = True Then v = Range("A4:H4").Value End Sub

その他の回答 (1)

  • emaxemax
  • ベストアンサー率35% (44/124)
回答No.1

> A:4 から h:4  よくわかりませんがA4セルからH4セルの範囲ということ? つまりRange("A4:H4")の範囲で発生したCalculateイベントだけをトリガーにしたい? 通常の方法(該当のシートのCalculateイベント)ではそういう捕らえ方はできないと思います。 ただ、裏ワザというか、抜け道が考えられないわけではありません。 新しいシートを用意します。 仮にトリガーにするRange("A4:H4")があるシートをSheet1だとすると、新しく用意したシートに =Sheet1!A4 =Sheet1!B5 =Sheet1!C4 中略 =Sheet1!G4 =Sheet1!H4 と入力し、それ以外の式は書きません。 その上で、この新しいシートのシートモジュールにCalculateイベントのマクロを書けばいかがでしょうか?

007itochan
質問者

お礼

へそ! やってみます。 基本 Changeで拾うべきなのですが、なぜか WEB配信データでChangeが反応しないのです。(そうしたものらいしです)