2014-12-07 88 views
1

如何在取消按鈕被按下時讓VBScript取消進程?當按下「確定」時,我想讓VBScript打開一個新的InputBox。我已經得到了這個工作,但我也想給一個函數「取消」按鈕。阻止整個VBScript打開任何其他MsgBoxInputBox的函數。VBScript InputBox - 如何識別何時按下取消按鈕?

我已經試過這樣的事情:

Set shell = createobject("wscript.shell") 
strtext = InputBox("text") 
    vbCancel 
If vbCancel then 
    WScript.Quit 
End if 

回答

4

MSDN

當了helpfile和上下文提供的,一個幫助按鈕 自動添加到對話框。

如果用戶單擊確定或按下ENTER鍵,則輸入框函數返回 無論文本框中是什麼。 如果用戶單擊取消,功能 返回零長度字符串(「」)

上面的粗體部分並不完全正確。
用戶可以通過多種方式取消InputBox對話框;通過關閉對話框,點擊取消或按ESC,ALT + F4等等。除了按下或點擊OK InputBox返回Empty(一個未初始化的變體,其數值爲0,數值爲0,隱式爲字符串),它表示對話框已被解除。

由於有一個零長度的字符串(「」)和Empty變量,尋找零長度的字符串平等作爲MSDN建議之間的隱式轉換並不總是處於邏輯,其中零長度字符串的適當溶液(例如意味着「使用默認」,而不是取消)。

Dim retval 
    retval = InputBox("txt") 
If IsEmpty(retval) Then 
    'cancelled 
    MsgBox "operation has been cancelled" 
Else 
    'something has entered even zero-length 
    MsgBox retVal 
End If 
+0

有點作品,但輸入框後,它打開一個新的。 – 2014-12-08 00:49:10

+0

@AvatarLandRazer沒有什麼,只是工作。你是如何實現的?你可能會誤解這個概念。只需將輸入框的結果分配給一個變量,然後檢查變量是否爲空。而已。 – 2014-12-08 01:39:48

+0

我實際上已經得到了整個腳本工作,但現在最後一件事。你的解決方案真的很有幫助。非常感謝。但有沒有辦法通過按下ok來重新啓動腳本? – 2014-12-08 01:49:36

相關問題