簡體   English   中英

當子子中的另一個子組輸出Msgbox時,如何從sub出去?

[英]How can I go out from a sub when another sub that is inside this sub outputs a Msgbox?

在sub(“Sensitivities”)中我調用另一個子(“MVE_NIM_Subs.MVE_Main”),如果這個子輸出一個MsgBox我想結束sub並轉到定義的“Jump”,而不是繼續執行sub。 我該怎么做?

謝謝

Public Sub Sensitivities() 
Application.Run "MVE_NIM_Subs.MVE_Main" 
........ 
Jump: 
End Sub

您可以使用公共布爾變量捕獲Msgbox。 在子MVE_NIM_Subs.MVE_Main修改代碼,以便在出現msgbox時將公共布爾變量設置為true。

在此子結束之后,執行將返回到子Sensitivities內執行代碼。 然后只檢查公共布爾變量的值。 如果是真的,那就去跳吧。

像這樣的東西:

Option Explicit
Public DidMsg As Boolean

Sub Sensitivities()

DidMsg = False
Application.Run "MVE_NIM_Subs.MVE_Main"

If DidMsg = True Then GoTo Jump
'rest of your code
'
'
'
'


Jump:
'rest of your code after point Jump
'
'
'
'
End Sub

Sub MVE_Main()

'your code whatever it is
'right after using the msgbox type:
DidMsg = True


End Sub

MsgBox是一個模態元素,因此代碼執行暫停,直到用戶處理它為止。 這有兩個選擇:

  1. 不要顯示MsgBox(如果你只是想在發生這種情況時停止代碼我還不確定它到底是什么意思?)

  2. 創建非模態用戶表單以模擬MsgBox。

在我看來,你必須選擇:

  1. 使MVE_NIM_Subs.MVE_Main成為返回Bool的函數。 當您在MVE_NIM_Subs.MVE_Main顯示消息框時,將返回值設置為True 然后在調用sub你可以寫:

    如果returnValue然后GoTo跳轉

  2. MVE_NIM_Subs.MVE_Main保持為sub並聲明一些全局Bool變量,可以在兩個subs中使用。 在outer sub中,在調用MVE_NIM_Subs.MVE_Main之前將其設置為False ,並在MVE_NIM_Subs.MVE_Main中將其設置為True只要您顯示消息框。 然后你可以在外部sub中使用它來決定是否跳轉,就像在第一個選項:)

暫無
暫無

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

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