2016-08-03 380 views
0

我对VBA非常陌生。我在工作表中有一个单元格,用于更新值。价值每月大约改变一次。有没有办法让我记录相邻单元格中的值发生变化的那一天? 例如, 如果A1中的值今天从5更改为6,我只想在A2中记录今天的日期。Excel/VBA更新单元格每次在另一个单元格中更改值

我并不需要记录以前的更改。

非常感谢!

+0

worksheet_change事件应该帮助,但认为该值是如何加入A1,它可以在这里完成吗? –

+0

单元格** A1 **是否包含* Formula *或* Typed Value *? –

+0

它在技术上是一个bloomberg函数,可以实时更新值@ Gary'sStudent – casualprogrammer

回答

0

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

1

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 
+0

谢谢!虐待它尝试 – casualprogrammer

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 
+0

所以这工作奇妙,当我输入一个不同的值,但单元格A1包含一个公式,自动date – casualprogrammer

+0

@casualprogrammer我注意到加里的学生在我面前捡起来 - 如果你不想让它更难无法访问bloomberg功能的源代码 –

+0

我以为我可以在A3中有一个单元格,当它自动调用时,就像A1 =或Value(A1)一样,只需使用A3上的代码就可以运行它代替。但是,这没有任何工作 – casualprogrammer

2

如果您使用的是彭博功能细胞A1BDP()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 
+0

这工作真的很好!非常感谢 – casualprogrammer

相关问题