Excel – 使用date时间更新另一个单元格时的更新列

我希望我的Excel电子表格列B仅在列A首次更改时才加盖date时间。 我看过很多VBA代码,但它捕捉到最后的变化,而不是第一次变化。

我试图用这个:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Offset(0, 1).Value = "" Then Target.Offset(0, 1) = Format(Now(), "HH:MM:SS") End If End Sub 

它工作除了我复制并粘贴到说3行时,date时间戳只显示3logging中的第一个。

下面的代码适合我

 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.EnableEvents = False If Target.Column = 1 And Target.Offset(0, 1).Value = "" Then Target.Offset(0, 1) = Format(Now(), "HH:MM:SS") End If Application.EnableEvents = True End Sub 

尝试从此行粘贴到列A的多个单元格时收到错误消息:

 Target.Offset(0, 1).Value = "" 

这是因为偏移量是多个单元格的范围,我们无法将此范围的Value与个别值进行比较。

你可以检查Target.Rows.Count 。 如果这个值大于1,那么你可以遍历Target范围,每次在input一个值到Offset(0, 1)之前检查相邻单元是否为空。

以下循环遍历Target单元格,并且即使目标是单个单元格也可以工作:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range If Target.Column = 1 Then Application.EnableEvents = False For Each rng In Target If rng.Offset(0, 1).Value = "" Then rng.Offset(0, 1) = Format(Now(), "HH:MM:SS") End If Next rng Application.EnableEvents = True End If End Sub 

您还应该检查Target是否超出单个列。 如果是这样,那么大概你只想把这个邮票input到B栏(对于A栏的更改)。