![](/img/trans.png)
[英]Automatically update a cell in Excel with the current date anytime any cell in a column is updated or changed
[英]Excel - Update Column with Date Time when Another Cell is First Changed
我希望仅在A列第一次更改时才用日期时间标记Excel电子表格B列。 我看过很多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行中时,日期时间戳仅显示3条记录中的第一条。
下面的代码对我有用
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
范围,每次在将值输入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
是否超出了单列。 如果是这样,那么大概您只想将印章输入到B列中(用于A列的更改)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.