[英]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是一個模態元素,因此代碼執行暫停,直到用戶處理它為止。 這有兩個選擇:
不要顯示MsgBox(如果你只是想在發生這種情況時停止代碼我還不確定它到底是什么意思?)
創建非模態用戶表單以模擬MsgBox。
在我看來,你必須選擇:
使MVE_NIM_Subs.MVE_Main
成為返回Bool
的函數。 當您在MVE_NIM_Subs.MVE_Main
顯示消息框時,將返回值設置為True
。 然后在調用sub你可以寫:
如果returnValue然后GoTo跳轉
將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.