[英]What's the difference between “end” and “exit sub” in VBA?
在 VBA 中,有時我們想在某些條件為真后退出程序。 但是我是使用end
還是exit sub
?
這有點超出您的問題范圍,但為了避免對 VBA 新手的讀者造成任何潛在的混淆: End
和End Sub
是不一樣的。 它們不執行相同的任務。
End
停止所有代碼執行,您幾乎應該總是使用Exit Sub
(或分別為Exit Function
)。
End 停止所有執行。 雖然這聽起來很誘人,但它也會清除所有全局和靜態變量。 (來源)
另請參閱結束聲明的 MSDN dox
執行時,
End
語句會重置所有模塊級變量和所有模塊中的所有靜態局部變量。 要保留這些變量的值,請改用Stop
語句。 然后,您可以在保留這些變量的值的同時恢復執行。注意
End
語句會突然停止代碼執行,而不調用 Unload、QueryUnload 或 Terminate 事件或任何其他 Visual Basic 代碼。 放置在窗體和類模塊的 Unload、QueryUnload 和 Terminate 事件中的代碼不會執行。 從類模塊創建的對象將被銷毀,使用 Open 語句打開的文件將被關閉,程序使用的內存將被釋放。 其他程序持有的對象引用無效。
End Sub
和Exit Sub
也不相同。 End Sub
不能像Exit Sub
那樣被調用,因為編譯器不允許這樣做。
這再次意味着您必須Exit Sub
,這是一個完全合法的操作:
退出子
立即退出出現它的 Sub 過程。 繼續執行調用Sub過程的語句之后的語句。 Exit Sub只能在Sub過程中使用。
此外,一旦您了解了程序的工作方式,顯然End Sub
不會清除任何全局變量。 但它確實清除了本地(Dim'd)變量:
結束子
終止此過程的定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.