每次在另一个单元格中更改Excel / VBA更新单元格

我对VBA很新。 我在工作表中有一个单元格,用于更新值。 价值每月大约改变一次。 有没有办法让我logging在邻近的单元格中的值发生变化的那一天? 例如,如果A1中的值今天从5改为6,我只想在A2中logging今天的date。

我并不需要logging以前的变化。

非常感谢!

如果您在单元格A1(BDP()BDH()BDS())中使用彭博function,则可以使用Worksheet_Calculate()事件macros来检测该单元格中的更改。

在这个例子中,我使用单元格A3作为“内存”来避免重新过滤date:

 Private Sub Worksheet_Calculate() Application.EnableEvents = False If [A1] <> [A3] Then [A3] = Range("A1").Value [A2] = Date MsgBox "Date recorded" End If Application.EnableEvents = True End Sub 

Worksheet_Change()在表单上的某些内容发生变化时被触发,所以将这样的内容添加到Sheet-Codemodule中:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Debug.Print "A1 has been changed!" 'do something End If End Sub 

更新:

看来你还需要计算事件,因为你正在使用一个公式。 你可以尝试这样的事情:

 Private Sub Worksheet_Calculate() Application.EnableEvents = False ActiveSheet.Calculate DoEvents With Range("A1") .Value = .Value DoEvents End With Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Range("A2").Value = Date End If End Sub 

您可以使用Worksheet_SelectionChange事件。 我想这取决于你在工作表中做了什么,以确定它是否会触发。 您必须将A1中的值与之前A1中的值进行比较,将其存储在另一个单元格中。