如果单元格中的内容发生变化,我想创建一个工作表,其中的行将在其旁边的列中获得时间戳记。
在以下宏中我该怎么做?第一个宏可以单独工作,但是如果我添加几个宏,则不会。
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
答案 0 :(得分:0)
您可能打算执行以下操作
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
。