我正在尝试获取用户手动输入的值作为整数,我必须考虑用户可能不输入整数的事实。这就是我试图捕捉类型不匹配错误的原因。但是,当我输入一个整数值时,我仍然会遇到类型不匹配错误。
这是造成此错误的一段代码。
Dim number As Integer
On Error GoTo error
number = InputBox("Enter an integer:")
error:
MsgBox ("Input error. Make sure you enter an integer value.")
Exit Sub
答案 0 :(得分:2)
Application.InputBox Method
允许您指定返回的数据类型。
MSDN Application.InputBox Method (Excel)
Sub Example1()
Dim number As Integer
number = Application.InputBox(Prompt:="Enter an integer:", Type:=1)
End Sub
因为如果用户取消,带有Type 1参数的Application.InputBox
将返回0,我宁愿使用标准InputBox
。使用它的方法是使用单独的变量捕获值并测试返回值是否符合您的条件。这样,您就可以避免任何错误。
Sub Example2()
Dim number As Integer
Dim result As String
result = InputBox("Enter an integer:")
If result = "" Then
MsgBox "Good Bye", vbInformation, "Action Cancelled"
Exit Sub
ElseIf IsNumeric(result) Then
If CDbl(result) > CInt(result) Then
MsgBox "You entered a Decimal" & vbCrLf & "Try Again", vbInformation, "Intergers Only"
Else
number = result
End If
Else
MsgBox "Intergers Only" & vbCrLf & "Try Again", vbInformation, "Intergers Only"
End If
End Sub
答案 1 :(得分:0)
这是一种方式:
Dim number As Integer
On Error Resume Next
number = InputBox("Enter an integer:")
If Err.number <> 0 Then
MsgBox ("Input error. Make sure you enter an integer value.")
Exit Sub
End If
On Error GoTo 0
请注意,这将接受非整数条目;不清楚这是否是一个问题。