首页 > 解决方案 > 每次某个单元格更改时创建一个新的日期戳?

问题描述

我有一个表示项目状态的单元格,并且此状态会经常更改。

每当状态发生变化时,我想要一行来说明状态变化的时间和新状态的名称。

我几乎没有使用 VBA 的经验,因此将不胜感激。到目前为止,我有这个:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 4 And Target.Row = 4 Then

        Target.Offset(10, 3) = Format(Now(), "YYYY-MM-DD HH:MM:SS")

    End If

End Sub

每当单元格 D4 中包含的状态发生更改时,此代码成功地在单元格 G7 中列出时间,但它总是重新填充相同的单元格,我希望每个连续的状态更改都列出单元格 G8 中的日期戳,然后是 G9,然后是 G10,等等上。

它也没有列出状态单元格 D4 的更改内容,理想情况下,我希望将其列在 F7、F8、F9 等中。

标签: excelvbadatestamp

解决方案


  1. 如果你只对一个Worksheet_Changeon cell感兴趣D4,可以使用Intersect如下所示的方法
  2. 要开始运行列表,您需要确定最后使用的单元格Column G并相应地偏移

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("D4")) Is Nothing Then
        Dim LR As Long: LR = Range("G" & Rows.Count).End(xlUp).Offset(1).Row
        Target.Offset(LR - Target.Row, 3) = Format(Now(), "YYYY-MM-DD HH:MM:SS")
        Target.Offset(LR - Target.Row, 4) = Target
    End If

End Sub

推荐阅读