【问题标题】:What's the difference between "end" and "exit sub" in VBA?VBA中的“结束”和“退出子”有什么区别?
【发布时间】:2016-07-29 06:18:59
【问题描述】:

在 VBA 中,有时我们想在某些条件为真后退出程序。但是我使用end 还是exit sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这有点超出您的问题范围,但为了避免对 VBA 新手造成任何潜在混淆:EndEnd Sub 不一样。他们不执行相同的任务。

    End 停止所有代码执行,您应该几乎总是使用Exit Sub(或Exit Function,分别)。

    End 停止所有执行。虽然这听起来很诱人,但它也很清楚 所有全局和静态变量。 (source)

    另请参阅 End Statement 的 MSDN dox

    执行时,End 语句会重置所有模块级变量和所有模块中的所有静态局部变量。要保留这些变量的值,请改用Stop 语句。然后您可以继续执行,同时保留这些变量的值。

    注意End 语句会突然停止代码执行,而不调用 Unload、QueryUnload 或 Terminate 事件或任何其他 Visual Basic 代码。您放置在表单和类模块的 Unload、QueryUnload 和 Terminate 事件中的代码不会被执行。从类模块创建的对象被销毁,使用 Open 语句打开的文件被关闭,程序使用的内存被释放。其他程序持有的对象引用无效。

    End SubExit Sub 也不相同。 End Sub 不能像 Exit Sub 那样被调用,因为编译器不允许这样做。

    这再次意味着您必须Exit Sub,即perfectly legal operation

    退出子
    立即退出它出现的 Sub 过程。 继续执行以下语句之后的语句 称为 Sub 过程。 Exit Sub 只能在 Sub 内使用 程序。

    此外,一旦您对过程的工作方式有所了解,End Sub 显然不会清除任何全局变量。但它确实clear local (Dim'd) variables

    结束子
    终止此过程的定义

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2011-03-05
    • 1970-01-01
    • 2011-08-15
    • 2011-03-28
    • 2018-02-08
    • 2023-02-14
    相关资源
    最近更新 更多