VBA退出子|如果不满足条件,请退出VBA子过程

Excel VBA退出子过程

退出子 语句比定义的VBA代码行更早退出子过程。但是,要退出子过程,我们需要应用某种逻辑测试。

让我们用简单的术语来构造它。

 Sub MacroName()'...'此处有一些代码'... Exit Sub'退出Sub而不执行下面的代码行'...'此代码将被忽略'... End Sub 

例子

您可以在此处下载此VBA退出子Excel模板– VBA退出子Excel模板

范例#1

有关更好的示例,请看下面的代码。

代码:

 Sub Exit_Example1()Dim k只要k = 1至10个像元(k,1)。值= k下一个k结束Sub 

上面的代码将在A1到A10单元格中插入从1到10的序列号。

现在,我只想插入5个序列号,并且一旦变量“ k”的值变为6,我想退出该子项。

为此,我将不得不在excel中添加逻辑测试为 如果k = 6然后退出Sub.

代码:

 Sub Exit_Example1()Dim k只要k = 1至10如果k = 6,则退出Sub'一旦k值变为6,它将忽略所有代码并退出Cells(k,1)。Value= k下一个k结束子 

现在一行一行地运行代码。按F8键开始程序。

截至目前,k值为零。

要将k值更改为1,再按一次F8键。

因此k值为1,我们的代码将继续运行,并将1插入到单元格A1中。这样,继续运行循环,直到k的值变为6。

现在k的值为6,代码行将要执行逻辑测试以退出子过程。如果再按一次F8键,它将仅直接退出整个子过程。

正如我们所看到的,它突出了单词 “退出子”。按下F8键,它将退出子过程,而无需输入单词 “结束子”.

Example#2 –发生错误时退出子过程

当我们获得错误值时,我们也可以退出子过程。例如,考虑以下将数字1除以数字2的数据。

以下是获取两个数字除法的代码。

代码:

 Sub Exit_Example2()Dim k只要k = 2至9个像元(k,3)。值=像元(k,1)。值/像元(k,2)。值下一个k结束 

众所周知,我们不能将任何数字除以零。因此,如果尝试执行此操作,我们将得到错误,即运行时错误“ 11”:被零除。

为避免这种情况,一旦遇到任何错误,我将提到我的宏以立即退出子过程。下面的代码就是这样一种情况。

代码:

 Sub Exit_Example2()Dim k只要k = 2到9出现错误GoTo ErrorHandler Cells(k,3).Value = Cells(k,1).Value / Cells(k,2).Value Next k ErrorHandler:Exit Sub结束子 

在上面的示例中,我提到了“ On Error Goto ErrorHandler”语句。在这里,单词ErrorHandler是我分配的标签。如果您可以在代码的底部看到我提到的标签为

ErrorHandler:退出子 

因此,一旦代码遇到错误,它将推动代码跳转到标签,并且标签具有“ Exit Sub”语句,因此将退出子过程。

现在,我将运行代码,它将计算除法,直到发现错误。

正如您在单元格C7中看到的那样,它遇到了“除以零”错误,因此它退出了子过程。不通知用户退出子过程始终是危险的事情。为了告知用户该错误,我们可以包括一个小消息框。

代码:

 Sub Exit_Example2()Dim k只要k = 2到9,在出错时转到ToTo ErrorHandler Cells(k,3).Value = Cells(k,1).Value / Cells(k,2).Value Next k ErrorHandler:MsgBox“错误已发生,错误是:“&vbNewLine&Err.Description Exit Sub End Sub 

上面的代码将显示错误消息,然后退出子过程。在运行代码时,如果发生错误,它将在VBA中显示消息框,如下所示。

这是退出子过程的一种可靠方法。