如果单元格中的内容发生变化,我希望创建一个工作表,其中的行将在其旁边的列中获得时间戳。
在下面的宏中,我做错了什么?第一个宏是独立工作的,但如果我添加了几个宏,它就不能工作。
Sub Update01()
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
With Target.Offset(0, 1)
.Value = Now
.NumberFormat = "MM/DD/YYYY hh:mm AM/PM"
End With
End Sub
Sub Update02()
If Target.Column <> 3 Then Exit Sub
If Target.Cells.Count > 3 Then Exit Sub
With Target.Offset(0, 3)
.Value = Now
.NumberFormat = "MM/DD/YYYY hh:mm AM/PM"
End With
End
Sub Main()
Call Update01
Call Update02
End Sub
发布于 2020-06-03 09:55:01
你可能打算做以下的事情
Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
On Error Goto ENABLE_EVENTS
Application.EnableEvents = False
If Target.Column = 1 Then
With Target.Offset(0, 1)
.Value = Now
.NumberFormat = "MM/DD/YYYY hh:mm AM/PM"
End With
ElseIf Target.Column = 3
With Target.Offset(0, 3)
.Value = Now
.NumberFormat = "MM/DD/YYYY hh:mm AM/PM"
End With
End If
ENABLE_EVENTS:
Application.EnableEvents = True
End Sub
请注意,在向单元格写入值之前,您需要Application.EnableEvents = False
,否则这将一次又一次地触发Worksheet_Change
。
还请注意,Worksheet_Change
是一个事件。这意味着每当更改工作表中的单元格值时,它都会自动运行。您不能手动运行此过程,也不能Call
它。
https://stackoverflow.com/questions/62168284
复制相似问题