繁体   English   中英

Excel-第一次更改另一个单元格时用日期时间更新列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM