我可以将多个宏合而为一吗?

时间:2020-06-03 08:24:29

标签: excel vba

如果单元格中的内容发生变化,我想创建一个工作表,其中的行将在其旁边的列中获得时间戳记。

在以下宏中我该怎么做?第一个宏可以单独工作,但是如果我添加几个宏,则不会。


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

1 个答案:

答案 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

相关问题