我对VBA非常陌生。我在工作表中有一个单元格,用于更新值。价值每月大约改变一次。有没有办法让我记录相邻单元格中的值发生变化的那一天? 例如, 如果A1中的值今天从5更改为6,我只想在A2中记录今天的日期。Excel/VBA更新单元格每次在另一个单元格中更改值
我并不需要记录以前的更改。
非常感谢!
我对VBA非常陌生。我在工作表中有一个单元格,用于更新值。价值每月大约改变一次。有没有办法让我记录相邻单元格中的值发生变化的那一天? 例如, 如果A1中的值今天从5更改为6,我只想在A2中记录今天的日期。Excel/VBA更新单元格每次在另一个单元格中更改值
我并不需要记录以前的更改。
非常感谢!
您可以使用Worksheet_SelectionChange事件。我想这取决于你在工作表中做了什么,以确定它是否会触发。 您必须将A1中的值与先前A1中的值进行比较,该值将存储在另一个单元格中。
的Worksheet_Change()
当纸张上的东西改变其价值正在被解雇,所以添加这样的事情你的表,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
谢谢!虐待它尝试 – casualprogrammer
更新:
看来你需要计算事件也是因为你正在使用公式。你可以尝试这样的事:
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
所以这工作奇妙,当我输入一个不同的值,但单元格A1包含一个公式,自动date – casualprogrammer
@casualprogrammer我注意到加里的学生在我面前捡起来 - 如果你不想让它更难无法访问bloomberg功能的源代码 –
我以为我可以在A3中有一个单元格,当它自动调用时,就像A1 =或Value(A1)一样,只需使用A3上的代码就可以运行它代替。但是,这没有任何工作 – casualprogrammer
如果您使用的是彭博功能细胞A1像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
这工作真的很好!非常感谢 – casualprogrammer
worksheet_change事件应该帮助,但认为该值是如何加入A1,它可以在这里完成吗? –
单元格** A1 **是否包含* Formula *或* Typed Value *? –
它在技术上是一个bloomberg函数,可以实时更新值@ Gary'sStudent – casualprogrammer