【发布时间】:2014-01-09 18:51:59
【问题描述】:
现在我正在编写一个稍微复杂的 Excel 工作簿网络,该网络几乎完全由 VBA 自动化驱动,因此编写了很多宏。
我会尽可能禁用屏幕更新、警报和事件。为了节省一些时间和头疼的追踪我可能启用/禁用这些的位置,我编写了一个子例程,其中每个所需的设置作为参数传入,因此您可以在一行中设置您想要启用/禁用的内容代码(或者至少是这样的想法)。
这是子程序的样子:
Sub AppToggles(Optional ScrUpdating As Boolean = False, _
Optional DispAlerts As Boolean = True, _
Optional Events As Boolean = False)
With Application
.ScreenUpdating = ScrUpdating
.DisplayAlerts = DispAlerts
.EnableEvents = Events
End With
End Sub
我使用Call AppToggles(True, True, True)(或所需的任何组合)从同一模块中的各种其他子例程中调用它。
问题是,子程序似乎没有做任何事情。这是一个如此简单的例程,单步执行它并没有告诉我什么。将鼠标悬停在关键字上显示我没有将每个开关设置为传递的参数。
我可以为我想的每个设置一个 If 语句,但我很好奇我在哪里掉线了:P
【问题讨论】:
-
好问题。我可以复制这种行为。我尝试了一些东西,但只要我使用变量它就不起作用。