VBA错误处理| Excel VBA中的错误处理指南

Excel VBA错误处理

在VBA中,当我们使用代码工作时,我们可能会遇到许多不同类型的错误,并且如何解决这些错误称为“错误处理”,现在语法中可能会出现一些错误,而excel本身会突出显示该错误,但是当出现某些错误时哪个超出范围或不存在excel为我们提供了一个弹出窗口,所以重要的是要知道哪个错误代码针对哪个错误,以便识别代码中的错误。

在Excel VBA中执行任何代码集时,我们都会遇到某种错误。其中一些错误是语法错误,有些是不可执行的错误。语法错误是由用户自己在Excel本身以红色突出显示时出现的。但是,当还有其他类型的运行时错误时,我们将如何处理它以及如何超越此错误,这将在本文中介绍。

除了语法错误,在执行任何代码集时都需要处理其他运行时错误。首先,让我举一个例子,说明另一个运行时错误是如何发生的。看下面的代码,

这是一个示例代码,执行后将返回msgbox函数中写入的内容。但是,正如我们看到的那样,在代码的第二行中有4/0,这在数学上是不可能的,因此它将返回运行时错误。让我们执行上面的代码,看看会得到的错误。

这是我们在执行给定代码时遇到的错误。现在,如何处理此错误已由错误处理完成。

有两种处理错误的方法:

  1. 关于错误转到,以及
  2. 错误继续时继续。

解释

如上所述,VBA中出现了许多类型的错误,有些是语法,有些是运行时。语法错误已用红色突出显示,例如,请参见下面的屏幕截图,

而另一个是运行时错误。基本上,excel将执行以下三件事:要么显示错误,要么忽略该错误,或​​者显示特定的指令集。为了执行这些任务,我们需要给出说明,这被称为错误处理。

如何处理VBA代码中的错误?

您可以在此处下载此VBA错误处理Excel模板– VBA错误处理Excel模板

范例#1

对于第一个示例,让我们以作为演示的第一个代码为例。在上面的示例中,我们已经看到代码在第二个msgbox函数中给出了运行时错误。

打开子功能后,编写以下代码,

代码:

 Sub Sample()错误恢复时继续Next MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

现在,当我们执行上面的代码时,我们看到没有执行错误的代码行。 Excel跳过该行,并在下一行继续。

处理错误的另一种方法是vba Goto语句,我们为excel提供了一个发现错误时要去的目的地。我们插入而不是以前的错误处理代码,写下下面的代码,

代码:

 Sub Sample()出错时转到a MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

如果发现错误,我们将excel Az作为目的地。现在,在msgbox之后,再编写如下代码,

代码:

 Sub Sample()On Error GoTo a MsgBox 4/2 MsgBox 4/0 MsgBox 4/1完成:退出子程序 

现在,我们需要将目标az定义为excel在代码中发现错误时应执行的操作。

代码:

 Sub Sample()On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1完成:退出Sub az:MsgBox“这是错误”&Err.Description End Sub 

现在,当我们运行此代码时,我们看到显示的结果。

这是第一个msg框结果,并且我们知道在代码的下一行中会出现错误,让我们看看excel会给出的结果。

上面的代码中的err.description帮助我们准确显示了代码中发生的错误。

范例#2

我们已经了解了如何处理代码中的错误。让我们看一下如何处理错误的另一个示例。考虑以下代码作为我们的第二个示例。

我们从示例1得到了类似的错误。该错误在d = i / b行中。现在,我们将使用上面介绍的两种方法来处理这些错误。

打开子功能后,编写以下代码,

代码:

 Sub Sample2()错误恢复上一个bx Dim i作为整数,b作为整数,c作为整数,d作为整数i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d End Sub 

现在,当我们执行代码时,我们可以看到它忽略了第二行,只显示了C的值。

上面的错误处理程序接下来是简历,现在我们将使用Go to,当遇到错误时,我们将告诉excel要去的目的地。写下以下代码,

代码:

 Sub Sample2()出错时转到bx Dim i作为整数,b作为整数,c作为整数,d作为整数i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d

bg是在msgbox D写下以下代码后遇到错误时给出的目标,

代码:

 Sub Sample2()出错时转到bx Dim i作为整数,b作为整数,c作为整数,d作为整数i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne:退出子程序 

现在我们需要定义目标Bx在遇到错误时应采取的措施,因此写下以下代码,

代码:

 Sub Sample2()在出错时转到bx Dim i作为整数,b作为整数,c作为整数,d作为整数i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne:退出Sub bx:MsgBox “这是另一个错误”和Err.Description End Sub 

现在,当我们执行代码时,我们可以看到excel首先为我们提供了C的值。

现在,在下一步中,当遇到错误时,它将向我们提供我们提供的提示。

这就是我们如何处理Excel VBA中的正常运行时错误。

要记住的事情

关于错误处理,我们需要记住一些事情:

  1. On Error Resume Next忽略该错误。
  2. 发生错误时GoTo在遇到错误时为excel提供目的地。
  3. 该描述用于向用户显示发生的确切错误。