仮にB列の数式が同じ行のC列の値をキーに別ブックの表を引いているとすれば、C列の値の変更を拾って
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 範囲 As Range
Dim 行番号 As Long
If Intersect(Target, Range("C3:C65535")) Is Nothing Then Exit Sub
For Each 範囲 In Target
行番号 = 範囲.Row
Sheet1.Cells(行番号, 1) = DateAdd("d", Now(), -1)
Next
End Sub
のような形でとりあえず似たような動きをすると思いますが、これは厳密には要求通りではありません。
C列の値が変更されても、数式の計算の結果B列の値が変わらない場合があるからです。
厳密にやろうとするならば
1.ファイルオープン時点でB列の値を全部別シートに保存しておく
2.シートの値が変更された時に保存しておいた別シートの値と比較する
といった処理が必要になってくると思います。
Sheet2がB列の値の保存先シートとして、ThisWorkbookに
Private Sub Workbook_Open()
Sheet2.Range("B:B").Value = Sheet1.Range("B:B").Value
End Sub
Sheet1に
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 範囲 As Range
Dim 行番号 As Long
If Intersect(Target, Range("C3:C65536")) Is Nothing Then Exit Sub
For Each 範囲 In Target
行番号 = 範囲.Row
If IsError(Sheet1.Cells(行番号, 2)) = IsError(Sheet2.Cells(行番号, 2)) Then
If Sheet1.Cells(行番号, 2) <> Sheet2.Cells(行番号, 2) Then
Sheet1.Cells(行番号, 1) = DateAdd("d", Now(), -1)
End If
Else
Sheet1.Cells(行番号, 1) = DateAdd("d", Now(), -1)
End If
Next
End Sub
といった感じでしょうか。
B列の数式の内容によっては使えないかもしれませんが。
補足
ありがとうございます。 B列には次の式が入っています。='[納品.xlsx]2013'!$B03 他のブックを読みに行っているため、納品.xlsxの値が変化しても、動きませんでした。私のスキルでは、限界です。宜しく、アドバイス願います。