use*_*603 3 excel vba excel-vba
我有一个名为"need"的变量,它被定义为一个整数.出现一个输入框并提示用户.如果他们输入一个整数,它会显示Msgbox"Got your number".如果我输入一个字符串,我得到运行时错误'13':输入不匹配.我想如果我只是使用了Else声明,那就说再试一次.尽管如此,它并没有这样做.我是否需要在Else声明中处理错误?如果是这样,这些线是什么?
Sub gadgetmanuf()
Dim need As Integer
'Dim rawneed As Single
'Dim rawavailable As Single
need = InputBox("How many gadgets are needed?", "Insert a number")
If TypeName(need) = "Integer" Then
MsgBox ("Got your number")
Else
MsgBox ("Try again")
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
使用Application.InputBoxwith类型会1强制用户输入一个数字(为文本,范围等提供自己的错误消息).所以你需要处理的是Cancel选项,即
下面的代码使用一个变体来处理这个问题,如使用Cancel与整型或长给出了0 -这可能是一个有效的条目.
Sub TaylorWalker()
redo:
vStr = Application.InputBox("How many gadgets are needed?", "Enter a number", , , , , , Type:=1)
If vStr = False Then GoTo redo
End Sub
Run Code Online (Sandbox Code Playgroud)
更长的选择
测试输入的变量是否大于0
Sub EddieBetts()
Dim StrPrompt As String
Dim lngNum As Long
StrPrompt = "How many gadgets are needed?"
redo:
lngNum = Application.InputBox(StrPrompt, "Enter an integer number (numbers will be rounded)", , , , , , Type:=1)
If lngNum < 1 Then
StrPrompt = "How many gadgets are needed - this must be a postive integer"
GoTo redo
End If
MsgBox "User entered " & lngNum
End Sub
Run Code Online (Sandbox Code Playgroud)