![](/img/trans.png)
[英]How to update a cell in Excel VBA with NOW time for a another cell update which in turn was updated via other cell changes?
[英]Excel/VBA update cell every time value in another cell changes
我是VBA的新手。 我在工作表中有一个单元格,可以实时更新值。 该值大约每月更改一次。 有什么方法可以记录相邻单元格中值更改的日期? 例如,如果A1中的值今天从5变为6,我只想在A2中记录今天的日期。
我真的不需要保留以前的更改记录。
非常感谢!
如果在单元格A1中使用Bloomberg函数(例如BDP()或BDH()或BDS()) ,则可以使用Worksheet_Calculate()
事件宏来检测该单元格中的更改。
在此示例中,我将单元格A3用作“内存”以避免过多地重新发布日期:
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()
上的某项更改其值时,将触发Worksheet_Change()
,因此将以下内容添加到工作表代码模块中:
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
更新:
似乎在使用公式时也需要calculate事件。 您可以尝试这样的事情:
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中先前存储在另一个单元格中的值进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.