首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能把几个宏放在一起吗?

我能把几个宏放在一起吗?
EN

Stack Overflow用户
提问于 2020-06-03 08:24:29
回答 1查看 38关注 0票数 1

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

在下面的宏中,我做错了什么?第一个宏是独立工作的,但如果我添加了几个宏,它就不能工作。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-06-03 09:55:01

你可能打算做以下的事情

代码语言:javascript
运行
复制
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它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62168284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档