vba - 在宏结束之前运行 Sub,如 Finally block

标签 vba error-handling

是否有一些 VBA 最佳实践来使用诸如“结束前”子例程之类的东西?

我在我的宏启动时更改 Excel 的默认配置,并且在我的宏到达其“结束子”行之前我将配置重置为其标准。 但是,如果发生错误怎么办?我是否应该在所有 sub 中定义“On Error”处理以将配置重置为标准属性?

例如,我正在更改配置,例如:

ScreenUpdating
DisplayStatusBar
Calculation
DisplayAlerts

最佳答案

我很确定在退出函数或子例程之前,没有这样的机制可以无条件地调用。您可能有错误处理程序(但这些是有条件地执行的;请参阅 ckuhn203 的评论作为示例)。

但是,类模块的实例(即对象)有这样的机制。当一个对象被销毁时(当它不再被任何变量/存储引用时会发生这种情况),它的 Class_Terminate 子例程被称为 no-matter-what。如果您可以将您的任务包装在这样一个您创建它后立即丢弃的对象中,您可以override覆盖这个子例程来进行清理。

关于vba - 在宏结束之前运行 Sub,如 Finally block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913601/

相关文章:

javascript - 从 VBA 转换为 JS - 输出错误

vba - Concat 宏不起作用,编码错误

vba - 将带有数据的行从另一个工作表动态插入到 Excel 工作表中

excel - 如何防止 Excel 表格格式覆盖 VBA 中范围的现有格式?

c++ - Linux::glibc detected free(): invalid next size (fast): Stack with void ptr element中的C++运行时错误

error-handling - “No matching signature”截断了BigQuery错误消息

vba - 在vba中分解评估

javascript - NestJS 在抛出错误后阻止新请求

php - laravel,已记录正常错误,但白屏只有一个错误

python-3.x - 有人可以帮我吗。我在用Python编写此代码时遇到问题