VBScript InputBox - 如何识别按下“取消”按钮的时间?

时间:2014-12-07 19:48:24

标签: vbscript

当按下取消按钮时,如何让我的VBScript取消进程?按下" OK"我希望VBScript能够打开一个新的InputBox。我已经得到了这方面的工作,但我也想提供一个功能"取消"按钮。一个函数可以阻止整个VBScript打开任何其他MsgBoxInputBox

我尝试过这样的事情:

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

1 个答案:

答案 0 :(得分:5)

来自MSDN

  

当提供helpfile和context时,会出现一个Help按钮   自动添加到对话框中。

     

如果用户单击“确定”或按ENTER键,则返回InputBox函数   文本框中的内容。 如果用户单击“取消”,则为该功能   返回零长度字符串(“”)

上面的大胆部分并不完全正确。
用户可以通过多种方式取消InputBox对话框;通过关闭对话框,单击取消,或按 ESC ALT + F4 ,依此类推。除了按或单击确定之外的所有情况下,InputBox返回Empty(未经初始化的变体,其数值为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