工作表更改添加现在()不自动更新

你好,我对VBA很新,但是我希望有人能帮上忙。 我正在尝试使用下面的代码创build一个时间戳。 但我不知道如何复制下一行。

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row = 2 Then If Target.Value = "" Then Cells(2, 4).Value = "" Else Cells(2, 4).Value = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

它适用于1单元。 但是当我inputA3,A4..so时,我怎么能重复这个。 这可能是一个非常基本的问题,但我是一个新手!

删除第2行的检查并使用Target.Row:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then If Target.Value = "" Then Cells(Target.Row, 4).Value = "" Else Cells(Target.Row, 4).Value = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

这应该做到这一点,

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:A99999")) Is Nothing Then If Target.Value = "" Then Cells(2, 4).Value = "" Else Cells(2, 4).Value = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

否则,你想添加每个偏移单元格

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:A99999")) Is Nothing Then If Target.Value = "" Then Target.Offset(0, 3).Value = "" Else Target.Offset(0, 3) = Format(Now, "H:mm:ss AM/PM") End If End If End Sub 

Worksheet.Change事件(Excel)

Range.Offset属性(Excel)

只是为了一蹴而就:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Cells(Target.Row, 4).Value = IIf(Target.Value = "", "", Format(Now, "H:mm:ss AM/PM")) End Sub 

注意:

使用_Change事件通常需要添加代码行,将Application.EnableEvents设置为False之后才能更改某些内容(本例中为单元格内容),然后在完成更改后返回True 。 这不会让事件句柄在无限循环中触发自身

在这种情况下,这样的Application.EnableEvents处理是不必要的,因为你正在改变第4列中的单元格, _Change事件处理程序将有效地做一些事情,只对第1列