2012-12-03 26 views
1

我很新vba excel。我正在嘗試爲vba excel中的報表格式化任務開發一些小工具。我知道如果我把下面的代碼放入一個按鈕,它會卸載我的表單,但我怎麼能重寫一個msgbox的按鈕來卸載整個用戶表單?如何覆蓋msgbox按鈕以卸載VBA中的用戶窗體?

Unload UserForm1 
+0

不完全確定你的意思。你的意思是你想通過點擊一個按鈕來關閉用戶窗體? – Chris

+0

是的。我希望我的程序完全關閉,當用戶點擊msgbox –

回答

2

如果我理解你的問題正確的(並且與克里斯我不知道,我這樣做),你知道,一個MsgBox可以返回一個值,你可以使用該值關閉您的形式?例如,第一個返回值,第二個沒有:

Dim l As Long 

l = MsgBox("What do you want to do?", vbOKCancel) 

If l = vbCancel Then 
    Unload UserForm1 
Else 
    MsgBox "You selected 'OK'" 
End If 

您可以使用返回值(L)來告訴叫MSGBOX卸載窗體的代碼。

+0

嗨Alan的按鈕。感謝您的回覆。當我嘗試時,它會給兩個按鈕提供一個msgbox。 (確定並取消)當我點擊確定按鈕時,它不會卸載窗體,它落在代碼中的Else語句中。但是當我點擊取消按鈕,它的作品。 :S –

+2

是的,如果你讀過上面的代碼,那就是它打算做的。我給你說明了這個消息框如何可以有不同的按鈕(取決於你傳遞的參數;在本例中是vbOkCancel),並且每個按鈕都返回一個不同的值(在本例中爲vbCancel或vbOK)。然後,您可以像我這裏所做的那樣使用If塊來根據用戶單擊哪個按鈕來選擇要執行的操作。如果你只想要一個按鈕,就可以創建參數vbOKOnly,但在這種情況下,你不需要If語句;只需在msgbox之後的下一行中卸載表單即可。 –

+0

好吧然後。我使用'vbOKOnly',並在'If'和'Else'語句中寫入'Unload UserForm1'。這解決了我的問題:) 在問我之前,我已經猜到MsgBox可能會像java的swing - JOptionPane一樣被覆蓋,但不知道如何,所以我認爲這將是一個問題。感謝您的幫助 –