VBA出现错误,转到| VBA中On错误语句的类型
Excel VBA在错误转到
错误是任何编码语言的重要组成部分,VBA宏与此无关。我认为发现错误发生的原因是完成工作的90%,而10%在于如何解决该错误。在每种编码语言中,编码人员都使用自己的方式来处理其编码中的错误,因此在VBA编码中也是如此。通常,我们需要忽略该错误,或者经常需要在发生错误时去处理某些特定的问题。 “ On Error”是我们需要在VBA中使用以处理错误的语句。
该语句具有三种类型的语句,下面是列表。
- 出错时转到0
- 错误转至[标签]
- 关于错误继续
在本文中,我们将看到在VBA编码中如何使用这三个语句来处理任何类型的错误。
如何在错误声明中使用VBA?
您可以在此处下载此VBA On Error GoTo语句模板– VBA On Error GoTo语句模板#1 –错误恢复后
正如语句本身所说的,“ On Error Resume Next”是指代码中发生错误时,只要通过忽略错误行代码来“恢复”代码的下一行。现在看下面的代码。
在下面的代码中,我提到了工作表名称,并要求在第一个单元格中输入值作为“错误测试”。
代码:
Sub On_Error_Resume_Next()工作表(“ Ws 1”)。选择范围(“ A1”)。值=“错误测试”工作表(“ Ws 2”)。选择范围(“ A1”)。值=“错误测试”工作表( “ Ws 3”)。Select Range(“ A1”)。Value =“错误测试”工作表(“ Ws 4”)。Select Range(“ A1”)。Value =“错误测试” End Sub
现在,我的工作簿中有以下工作表。
- 我将运行代码,看看会发生什么。
- 我们收到“下标超出范围”错误,单击“调试”以查看在哪一行出现错误。
- 因此,在“ Worksheets(“ Ws 3”)。Select”行中,我们得到了一个错误,这是因为在我们的工作簿中没有名为“ Ws 3”的工作表,因此遇到了错误。
在这种情况下,我们可能想忽略该错误并继续执行代码到下一行,这是我们的“ On Error Resume Next”错误处理程序出现的地方。
- 我们需要做的就是在宏的开头添加“ On Error Resume Next”行。
现在执行此代码,它不会显示任何错误消息,因为无论何时代码遇到错误,它都会忽略该错误并继续执行下一行代码。
#2 –错误时转到0
在通过使用“ On Error Resume Next”语句禁用错误消息之后,这不是错误处理程序,而是错误消息启用器。
使用“ Resume Next”语句的人VBA宏开始忽略它发生的任何类型的错误,并继续执行下一行代码。但是我们不希望这种情况一直发生,因为某些错误需要我们有意忽略,而其他一些则需要通知。
如果任何特定的代码集在该代码块中引发错误,则仅我们需要忽略错误,而我们不想忽略该错误的其他部分。
- 查看下图,了解“ On Error GoTo 0”语句的用法。
因此,现在错误将被忽略,直到代码找到错误通知启动器“ On Error GoTo 0”为止。一旦这行代码将宏恢复为正常运行,并照常开始引发错误消息。
#3 –错误时转到标签
我们已经看到了如何忽略该错误以及如何启用该错误通知。现在,使用这种方法,我们可以转到特定的代码行。
在此方法中,“标签”表示我们可以给该标签指定任何名称,并且在所需的代码行中也应提供相同的标签。
例如,看上面示例中的相同代码。
现在,通过按F8功能键逐行执行代码。
现在宏将读取错误处理程序语句,按F8键执行前2个工作表代码。
现在,宏将要执行工作簿中不存在的第三个工作表代码,按F8键,然后看看会发生什么。
由于宏在下面的代码行中遇到错误,因此已跳转到错误处理程序标签 “错误信息” 通过“ On Error GoTo [Label]”语句对此进行了描述。
现在,消息框将显示消息为“发生错误并退出宏”。
要记住的事情
- VBA On Error GoTo 0将再次启用错误通知,因此在提供错误处理程序后不要忘记添加此通知。
- 您需要绝对确定要忽略错误的代码的哪一部分,因此仅针对该代码块围住错误处理程序。