- ベストアンサー
エクセル 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
- みんなの回答 (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)
> 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イベントのマクロを書けばいかがでしょうか?
お礼
へそ! やってみます。 基本 Changeで拾うべきなのですが、なぜか WEB配信データでChangeが反応しないのです。(そうしたものらいしです)