我对VBA很新。我在工作表中有一个实时更新值的单元格。价值每月变化一次。有没有办法让我记录相邻单元格中值的变化? 例如, 如果A1中的值今天从5变为6,我只想在今天的A2中记录日期。
我真的不需要记录以前的变化。
非常感谢你!
答案 0 :(得分:2)
如果您在单元格 A1 中使用Bloomberg功能,例如 BDP()或 BDH()或 BDS()< / em>,然后您可以使用Worksheet_Calculate()
事件宏来检测该单元格中的更改。
在这个例子中,我使用单元格 A3 作为&#34;内存&#34;为了避免过于频繁地重新发布日期:
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
答案 1 :(得分:1)
当工作表上的某些内容更改其值时会触发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
答案 2 :(得分:1)
<强> 更新 强>
您似乎也需要计算事件,因为您正在使用公式。你可以尝试这样的事情:
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
答案 3 :(得分:0)
您可以使用Worksheet_SelectionChange事件。我想这取决于你在工作表中做了什么,以及它是否会触发。 您必须将A1中的值与之前存储在另一个单元格中的A1中的值进行比较。