退出被调用函数的调用子

时间:2015-11-12 14:47:42

标签: vba

是否可以退出subA调用的内部 subB中的subA?

public subA()
    call subB()
end sub

subB()
    If true then
        'exit subA
    end if
    'continue
end sub

如果无法做到这一点,最好的办法是什么? 我搜索了这个网站,但所有类似的问题都有解决方案,解决了其他人要求的具体问题。他们不适合我。

1 个答案:

答案 0 :(得分:1)

使subB成为函数并使用返回值告诉subA退出:

public subA()
    if not subB() then
        Exit Sub   ' <--- new
    end if
end sub

function subB() as boolean
' returns True on success, False on failure.
    If <<some condition for exiting subA>> Then
        subB = False   '<--- new - cause subA to exit
        Exit Function
    end if
    'continue
    subB = True  '<--- new - tell subA it doesn't need to exit
End Function

编辑最佳方式是您在特定代码的上下文中最易读和可维护的方式。使用有意义的东西 - 没有硬性规则。例如:

  • 您可以将subB纳入subA;这样你就不会有嵌套退出问题。
  • 您可以使用Err.Raise中的subBOn Error来电者中的subA。但是,这会将错误处理与正常的控制流混合在一起,这通常会降低可维护性。