时间戳记不会覆盖以前的时间戳

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

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 

这是我到目前为止,这将更改logging到D1,但它不会填充具有时间戳的列A的下一行,它只是用当前的时间戳修改单元格A1。 我需要使用新的时间戳logging来跟踪更改。 每当单元格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列中最后一个日志的末尾。我想replace这一行:

 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())) 

应该做你想要的伎俩。