工作表更改添加现在()不自动更新
你好,我对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列