excel - 我可以将多个宏放在一个中吗?
问题描述
我想创建一个工作表,如果单元格中的内容发生变化,我的行会在其旁边的列中获取时间戳。
我在以下宏中做错了什么?第一个宏独立工作,但如果我添加几个宏就不行。
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
解决方案
您可能打算执行以下操作
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
这样做。
推荐阅读
- html - 需要帮助尝试启动 HTML 项目
- python - 执行后从头开始脚本(python)请帮助
- r - 使用 ifelse 在 R 中创建新列
- sockets - 如何在 dart 中管理来自 StreamSubscription 的多个数据?
- java - Java 编译器错误:不是三元运算符中的语句
- c# - 使用 CsvHelper 将 CSV 文件中的编号列映射到数组
- objective-c - 从非视图类获取presentViewController(Objective-C)
- wpf - 如何在 PowerShell 脚本中多次打开 WPF 窗口
- apache - Apache:虚拟主机内的别名目录不起作用
- rust - 两种解决方案,为什么其中一种不需要克隆特征