| 
    
     |  | 一般的に「プログラムを走らせっぱなしにして、何かの値や状態を監視する」 というやり方をしない方が良いと思います。詳しい説明はしませんが、
 その方向で組もうとすると、なかなか安定した動作を確保できなくて
 苦労するからです。
 ですので"変化前と変化後の比較"をしたいなら、どこかに変化前の値を記憶・保存
 しておき、変化したタイミングで値を最新のものと入れ替える。というような
 考え方が無難かと思います。
 この質問内容に沿ってサンプルを作ると、例えばグローバル変数を使って・・
 
 Private Data1 As Variant, Data2 As Variant
 
 Private Sub Worksheet_Activate()
 Data1 = Range("A1").Value
 Data2 = Range("A2").Value
 End Sub
 
 Private Sub Worksheet_Calculate()
 With Range("A1")
 If .Value <> Data1 Then
 .Speak: Data1 = .Value
 End If
 End With
 With Range("A2")
 If .Value <> Data2 Then
 .Speak: Data2 = .Value
 End If
 End With
 End Sub
 
 というようなコードになるでしょう。
 
 
 |  |