【问题标题】:Timestamp Log that does not overwrite previous timestamp不覆盖先前时间戳的时间戳日志
【发布时间】:2015-02-16 11:07:25
【问题描述】:

我需要创建一个单元格更改的时间戳日志。例如,如果单元格 D1 的值从以前的值更改,A 列将记录时间戳。

private sub worksheet_change(ByVal Target as Range)

if Range("d1") then
applicaton.enableevents = false
range("a1") = DATE + Time
applicaton.enableevents = true

end if
End sub

这是我到目前为止所拥有的,它记录了对 D1 的更改,但它不会使用时间戳填充列 A 的下一行,它只是使用当前时间戳修改单元格 A1。我需要使用新的时间戳条目来跟踪更改。每次单元格 D1 发生更改时,我都需要它用时间戳填充整个 A 列。

【问题讨论】:

    标签: excel vba timestamp


    【解决方案1】:

    这已经是一个很好的起点。现在您只需要确保在 A 列中注册的最后一个日志的末尾附加修改时间。我认为替换此行:

    range("a1") = DATE + Time
    

    用这条线

    Cells(Rows.Count, 1).End(xlUp).offset(1,0) = "D1 Modified on " & DateSerial(Year(Now()),Month(Now()),Day(Now())) & " at " & TimeSerial(Hour(Now()), Minute(Now()), Second(Now()))
    

    应该做你想要的伎俩。

    【讨论】:

      【解决方案2】:

      解决方案:

      Private Sub Worksheet_Change(ByVal Target As Range)
          If Target.Address = "$D$1" Then
            Application.EnableEvents = False
            Dim LastRow As Long, ws As Worksheet
            Set ws = Target.Worksheet
            LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
            ws.Range(ws.Cells(LastRow + 1, 1), ws.Cells(LastRow + 1, 1)).Value = DateValue(Now()) & ", " & TimeValue(Now())
            Application.EnableEvents = True
          End If
      End Sub
      

      注意事项:

      1. 完全限定范围很重要。

      2. 在某些情况下,查找最后一行可能会很棘手。见this。我假设你没有这样的案例。

      【讨论】:

        猜你喜欢
        • 2011-10-08
        • 1970-01-01
        • 1970-01-01
        • 2012-09-10
        • 2016-11-06
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多