当出现错误时,我想做一些清理,然后让错误向上流动,以便全局处理。
在 C# 中,我会执行 try finally
但这在 VBA 中是不可能的,只有 On Eror GoTo <mylabel>
.
在标签中捕获错误时,如何正确地重新抛出错误?
是否只能使用所有属性再次调用 Err.Raise,否 throw
like 关键字是否存在?:
Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
最佳答案
这是正确的方法,但不,您不必重新声明所有 err 属性。值被保留:
err.raise Err.Number
是相同的Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
https://docs.microsoft.com/en-us/office/vba/Language/Reference/user-interface-help/raise-method如果您要抛出一个类模块,它可能会更复杂。默认情况下,类模块的 err 对象被捕获并重新创建,因此根据它的声明方式,可能会替换属性。
关于excel - 如何在 VBA 中重新抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250302/