【问题标题】:Timestamp when a cell in a larger cell range is changed via a formula (Excel)通过公式 (Excel) 更改较大单元格区域中的单元格时的时间戳
【发布时间】:2017-04-03 13:41:06
【问题描述】:

作为this 问题的后续行动,每当通过一系列单元格的公式更改单元格时,我都需要在相邻单元格中设置时间戳。

我知道这意味着构建一个数组以将先前的值存储到下面的代码中(实现相同但仅适用于单个单元格)并且希望能帮助实现这一点。

这是适用于单个单元格的代码...

在Sheet1单元格A1中,输入这个公式

=Sheet2!A1+1

现在在一个模块中粘贴这段代码

Public PrevVal As Variant

将此粘贴​​到工作表代码区域

Private Sub Worksheet_Calculate()
    If Range("A1").Value <> PrevVal Then
        Range("B1").Value = Format(Now, "dd/mm/yyyy hh:mm:ss")
        PrevVal = Range("A1").Value
    End If
End Sub

最后在 ThisWorkbook 代码区域粘贴此代码

Private Sub Workbook_Open()
    PrevVal = Sheet1.Range("A1").Value
End Sub 

【问题讨论】:

  • 相反,您可以使用 worksheet_change 事件来检测工作表中的更改(任何数据范围)并在更改的正常行中添加时间戳。您可以使用 Target.row 来识别更改的行。
  • @ArindamD,Worksheet_Change 未检测到公式更改
  • 两个地方都改成PrevVal = application.sum(Range("A1:A9").Value)。那么如果 A1:A9 中的任何值发生变化,所有值的总和都会发生变化。
  • @CallumDA - 这就是为什么它是评论而不是作为解决方案发布的原因。如果 OP 认为它是足够的,那么它比变体数组或脚本字典解决方案的计算密集度更低(并且更容易遵循)。
  • @Andy - 抱歉,我只是没有从你的标题或叙述中推断出来。

标签: vba excel


【解决方案1】:

您可以将以前的值保存在 Dictionary 而不是数组中。要使用字典,您需要添加对 Microsoft Scripting Runtime Library

的引用

(工具 > 参考 > Microsoft 脚本运行时库)


标准模块

Public PrevVal As Dictionary

ThisWorkbook 模块

Private Sub Workbook_Open()
    Dim r As Range
    Set PrevVal = New Dictionary
    For Each r In Worksheets("Sheet1").Range("A1:A10")
        PrevVal.Add Item:=r.Value, Key:=r.Address
    Next r
End Sub

表格模块

Private Sub Worksheet_Calculate()
    Dim v As Variant

    For Each v In PrevVal.Keys()
        If Range(v).Value <> PrevVal(v) Then
            Range(v).Offset(0, 1).Value = Format(Now, "dd/mm/yyyy hh:mm:ss")
            PrevVal(v) = Range(v).Value
        End If
    Next v
End Sub

【讨论】:

  • 覆盖键的项目值就足够了。
  • @Andy 你保存并关闭/重新打开了吗?因为在您运行 Workbook_Open 子程序之前字典中没有任何内容(即当您打开工作簿时)
  • 谢谢,我没有,现在我已经完美地工作了。再次感谢。
  • @Andy,创建三个公共字典并将代码粘贴到每个工作表模块中,更改代码以引用该工作表的特定字典
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
相关资源
最近更新 更多