不会覆盖上一个时间戳的时间戳日志



我需要创建单元格更改的时间戳日志。例如,如果单元格 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 列。

一个解决方案:

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. 在某些情况下,查找最后一行可能很棘手。看到这里。我假设你没有这样的案例。

这已经是一个很好的起点。现在,您只需要确保修改时间附加到 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()))

应该为你想要的做诀窍。

最新更新