Vbscript 如何识别inputbox中的“确定”和“取消”按钮
嗨,嗨,我必须写一个代码,如果用户点击在输入框中输入一些东西,它应该继续。如果它没有输入任何值,它应该再次抛出相同的问题。我已经做到了,但我的问题是,当用户再次单击“取消”时,会问同样的问题,而它应该退出。我对VB脚本非常陌生。请帮助我如何处理这些按钮?下面是我现有的代码Vbscript 如何识别inputbox中的“确定”和“取消”按钮,vbscript,Vbscript,嗨,嗨,我必须写一个代码,如果用户点击在输入框中输入一些东西,它应该继续。如果它没有输入任何值,它应该再次抛出相同的问题。我已经做到了,但我的问题是,当用户再次单击“取消”时,会问同样的问题,而它应该退出。我对VB脚本非常陌生。请帮助我如何处理这些按钮?下面是我现有的代码 Do while x=0 strAnswer = InputBox("Please enter the file extension * For all files:", _ "File Extension") I
Do while x=0
strAnswer = InputBox("Please enter the file extension * For all files:", _
"File Extension")
If strAnswer = "" Then
MsgBox"You must enter an extension."
Else
a=strAnswer
Exit Do
End If
Loop
intRow = 2
'strFileName = "T:\public\Madhumita\New.xls"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
'objWorkbook.SaveAs(strFileName)
objExcel.Cells(1, 1).Value = "Folder"
objExcel.Cells(1, 2).Value = "File Name"
objStartFolder = "T:\public\Madhumita\Madhu"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
If a="*" Then
For Each objFile in colFiles
objExcel.Cells(intRow, 1).Value = objfolder.Name
objExcel.Cells(intRow, 2).Value = objFile.Name
intRow = intRow + 1
Next
else
For Each objFile in colFiles
m=objFSO.GetExtensionName( objFile.Path )
If m=a Then
objExcel.Cells(intRow, 1).Value = objfolder.Name
objExcel.Cells(intRow, 2).Value = objFile.Name
intRow = intRow + 1
End If
Next
End If
objExcel.Range("A1:B1").Select
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
Sub SaveAs()
Application.Dialogs(xlDialogSaveAs).Show
End Sub
objExcel.Quit
MsgBox "Done"
您需要处理(至少)三种情况-InputBox()返回:
Option Explicit
Do While True
Dim vInp : vInp = InputBox("ee")
WScript.Echo TypeName(vInp)
Select Case True
Case IsEmpty(vInp)
WScript.Echo "Abort"
Exit Do
Case "" = Trim(vInp)
WScript.Echo "Try again"
Case Else
WScript.Echo "Work with " & vInp
Exit Do
End Select
Loop
样本输出:
String
Try again
Empty
Abort
String
Work with aaa
一串
再试一次
空的
中止
一串
与aaa合作
很抱歉,这只是个谎言:
如果用户单击OK或按ENTER键,InputBox函数将返回
文本框中的内容。如果用户单击“取消”,则该功能
返回长度为零的字符串(“”)
应该是:
。。。如果用户单击Cancel,函数将返回空值
(TypeName为空,VarType为vbEmpty)
我正在使用VBS,我对cancel/ok的调查显示: Cancel返回一个空字符串和一个零长度字符串-和您说的一样?,显然不是 Ok仅返回长度为零的字符串 我使用下面的代码来区分
if IsEmpty(nmbr) then 'cancel button pressed ?
nmbr = "x"
end if
if not IsEmpty(nmbr) then 'ok button pressed ?
if len(nmbr) = 0 then
nmbr = "ok"
end if
end if
对于InputBox()
,您可以使用默认值来确定用户是否单击了取消,或者他们是否单击了确定,或者单击Enter继续而不输入值:
Sub Get_TIN()
TIN = Trim(InputBox("Enter the provider TIN:", "Provider TIN", "ex. 123456789"))
If TIN = "" Then 'When CANCEL is clicked because "TIN" will be empty.
MsgBox "You pressed Cancel. Program will now end.", vbExclamation + vbOKOnly, "Macro End"
Exit Sub
End If
If IsEmpty(TIN) = False Then 'When OK is clicked or Enter pressed because default text will be stored. Next, set TIN to "".
TIN = ""
End If
End Sub
取消输入框返回空值;按OK返回文本字段中的字符串(可能为空==零长度);如果您要求使用“nmbr”,那么用“x”或“ok”覆盖变量可能不是一个好主意。对不起,Ekkhard等人,这是为了伪代码,我应该更明确一些。如果是我原始注释中的返回值,它们就是返回的值,即IsEmpty(string)和len(string)=zero对于Cancel都为true。