簡體   English   中英

VBA 中的“結束”和“退出子”有什么區別?

[英]What's the difference between “end” and “exit sub” in VBA?

在 VBA 中,有時我們想在某些條件為真后退出程序。 但是我是使用end還是exit sub

這有點超出您的問題范圍,但為了避免對 VBA 新手的讀者造成任何潛在的混淆: EndEnd Sub是不一樣的。 它們不執行相同的任務。

End停止所有代碼執行,您幾乎應該總是使用Exit Sub (或分別為Exit Function )。

End 停止所有執行。 雖然這聽起來很誘人,但它也會清除所有全局和靜態變量。 來源

另請參閱結束聲明的 MSDN dox

執行時, End語句會重置所有模塊級變量和所有模塊中的所有靜態局部變量。 要保留這些變量的值,請改用Stop語句。 然后,您可以在保留這些變量的值的同時恢復執行。

注意End語句會突然停止代碼執行,而不調用 Unload、QueryUnload 或 Terminate 事件或任何其他 Visual Basic 代碼。 放置在窗體和類模塊的 Unload、QueryUnload 和 Terminate 事件中的代碼不會執行。 從類模塊創建的對象將被銷毀,使用 Open 語句打開的文件將被關閉,程序使用的內存將被釋放。 其他程序持有的對象引用無效。

End SubExit Sub也不相同。 End Sub不能像Exit Sub那樣被調用,因為編譯器不允許這樣做。

在此處輸入圖片說明

這再次意味着您必須Exit Sub ,這是一個完全合法的操作

退出子
立即退出出現它的 Sub 過程。 繼續執行調用Sub過程的語句之后的語句。 Exit Sub只能在Sub過程中使用。

此外,一旦您了解了程序的工作方式,顯然End Sub不會清除任何全局變量。 但它確實清除了本地(Dim'd)變量

結束子
終止此過程的定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM