繁体   English   中英

每次更改另一个单元格中的值时,Excel / VBA更新单元格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM