【问题标题】:Excel/VBA update cell every time value in another cell changes每次另一个单元格中的值更改时,Excel/VBA 更新单元格
【发布时间】:2016-12-09 05:34:24
【问题描述】:

我对 VBA 很陌生。我在工作表中有一个实时更新值的单元格。值大约每月更改一次。有没有办法让我记录相邻单元格中值更改的日期? 例如, 如果今天 A1 中的值从 5 变为 6,我只想在 A2 中记录今天的日期。

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

非常感谢!

【问题讨论】:

  • worksheet_change 事件应该会有所帮助,但是,想想如何将值添加到 A1,可以在这里完成吗?
  • 单元格 A1 会包含 Formula 还是 Typed Value ??
  • 从技术上讲,它是一个实时更新值@Gary'sStudent 的Bloomberg 函数

标签: excel vba


【解决方案1】:

您可以使用 Worksheet_SelectionChange 事件。我想这取决于你在工作表中所做的其他事情是否会触发。 您必须将 A1 中的值与 A1 中之前存储在另一个单元格中的值进行比较。

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

    • 谢谢!我试试看
    【解决方案3】:

    更新:

    似乎您在使用公式时也需要计算事件。你可以试试这样的:

    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 包含一个自动更新的公式
    • @casualprogrammer 我注意到 Gary 的学生在我之前就意识到了这一点 - 如果您无法访问Bloomberg 函数的源代码,这将变得更加困难
    • 我想我可以只在 A3 中有一个单元格,它在自动更新时获取 A1 的值,例如 =A1 或 =Value(A1) 并使用代码在 A3 上运行它。但这也没有用
    【解决方案4】:

    如果您在单元格 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
    

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多