处理VBA代码中的错误时,通常会使用几种方法。其中一种方法是使用
On Error Resume Next
进行内联错误处理。然而,阅读现有问题 "VBA:On Error Resume Next 的工作时间有多长?" 后,我发现不清楚程序是否会继续执行下一行,或者程序是否会在下一个逻辑点继续执行。
MSDN对On Error Resume Next
的功能描述如下:
此外,(现已停用的)StackOverflow文档关于指定当运行时错误发生时,控制转到紧接在错误发生语句后面的语句,执行将继续。访问对象时,请使用此形式而不是 On Error GoTo。
Resume
关键字也指出了On Error Resume Next
类似的功能。
Resume Next
继续执行导致错误的语句后面的语句。如果在此之前未实际处理错误,则允许使用潜在无效数据继续执行,这可能会导致逻辑错误和意外行为。
这并没有清楚地说明错误处理行如何处理控制流语句的初始行中的错误。具体来说,如果错误发生在If .. Then .. Else .. End If
语句的第一行中,程序会从If
语句内部的第一行开始运行,还是会从End If
语句后面的第一行开始运行?