背景:

我正在尝试计划如何自动执行任务,并期望使用另一个子例程中的多个私有(private)子例程或函数。我将使用亲子语言来尝试保持直率。

父子例程是调用每个子例程的子例程。

子程序(子程序)将被调用以执行其代码。

我试图确定我是否可以在父级中进行错误处理以退出子级子级并移至下一个子级。

尽管我将使用的示例代码是一个非常简单的示例,只是将i加1,但是在resume next不够用的情况下,计划的代码会更多地涉及(不是忽略错误是“好的”做法)。

问题:

我没有运气来搜索是否存在现有的on error来退出当前子代并移至下一个子代​​,而我的on error行仅在父代中。

问题:

有没有一种方法可以根据父子例程中的错误处理语句退出当前子对象的子例程?或者,我应该坚持每个 child 的错误处理吗?

问题代码:

举例说明我的想法;这不是工作代码。

Option Explicit
Public i As Long

Sub fdsa()
    on error ' exit called subroutine
    a
    s
    d
    f
    MsgBox i
End Sub

Private Sub a()
    i = i + 1
End Sub

Private Sub s()
    i = i + 1
End Sub

Private Sub d()
    i = i + 1 / 0
End Sub

Private Sub f()
    i = i + 1
End Sub

父级完成后,消息框将输出“3”。

最佳答案

如果子例程没有错误处理程序,则所有错误都将被传递回父例程,此时您可以继续执行下一个。您所需要的只是错误恢复,然后在这里:

Sub fdsa()
    on error resume next
    a
    s
    d
    f
    MsgBox i
End Sub

关于excel - 通过从父子例程进行错误处理来取消子子例程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56176165/

10-12 03:48