是否有一些VBA最佳做法可以在结束之前使用'子程序?
我正在更改Excel的默认配置,当我的宏启动时,在我的宏到达其结束子'之前我正在将配置重置为其标准。 但是如果出现一些错误呢?我应该定义' On Error'在所有潜艇内进行处理,将配置重置为标准属性?
例如,我正在更改配置,例如:
ScreenUpdating
DisplayStatusBar
Calculation
DisplayAlerts
答案 0 :(得分:2)
我很确定在退出函数或子例程之前没有这样的机制被称为无条件。您可能有错误处理程序(但这些有条件地执行;请参阅ckuhn203的注释以获取示例。)
但是,对于类模块(即对象)的实例,存在这样的机制。当一个对象被销毁时(当任何变量/存储不再引用时会发生这种情况),它的Class_Terminate
子程序被称为无关紧要的东西。如果你可以将你的任务包装在你创建它后立即丢弃的对象中,你可以覆盖覆盖这个子程序来进行清理。
答案 1 :(得分:1)
如果我正确理解您的问题,是的,最好的方法是在需要的每种方法中定义On Error Goto
行,如下所示:
Public Sub DoSomething()
On Error GoTo Finally ' Try
Application.ScreenUpdating = False
' Do your stuff here
Finally:
Application.ScreenUpdating = True
End Sub
即使出现错误,这也可以确保完成ScreenUpdating
之类的操作。您还可以添加一个catch块,如下所示:
Public Sub DoSomething()
On Error GoTo Catch ' Try
Application.ScreenUpdating = False
' Do normal stuff here
GoTo Finally
Catch:
' Do only error stuff here
Finally:
Application.ScreenUpdating = True
End Sub
一般来说,GoTo
是一种讨厌的做法,但对于错误捕捉,VBA会强迫你的手。