在VBA中,有时我们想在某些条件为真后退出程序。但我是否使用end
或exit sub
?
答案 0 :(得分:43)
这有点超出了您的问题的范围,但为了避免对VBA新手的读者造成任何混淆:End
和End Sub
不一样。他们没有执行相同的任务。
End
会停止所有代码执行,您几乎应该始终使用Exit Sub
(或Exit Function
)。
结束停止所有exectution。虽然听起来很诱人,但它也很清晰 所有全局和静态变量。 (source)
另请参阅End Statement
的MSDN dox执行时,
End
语句将重置所有模块中的所有模块级变量和所有静态局部变量。要保留这些变量的值,请改用Stop
语句。然后,您可以在保留这些变量的值的同时恢复执行。注意
End
语句突然停止代码执行,而不调用Unload,QueryUnload或Terminate事件或任何其他Visual Basic代码。您不会执行放置在Unload,QueryUnload和Terminate事件中的代码和类模块。从类模块创建的对象将被销毁,使用Open语句打开的文件将被关闭,并且程序使用的内存将被释放。其他程序持有的对象引用无效。
End Sub
和Exit Sub
也不一样。无法以End Sub
的方式调用Exit Sub
,因为编译器不允许它。
这再次意味着您必须Exit Sub
,这是perfectly legal operation:
退出子
立即退出出现的Sub过程。 继续执行声明之后的声明 称为 Sub 程序。 退出子只能在子中使用 程序。
此外,一旦您了解了程序的工作方式,显然End Sub
不会清除任何全局变量。但确实clear local (Dim'd) variables:
结束次
终止此过程的定义。