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栏的更改)。