无法将InputBox中的数据解析为整数(Visual Basic for Excel)

时间:2016-11-18 10:59:22

标签: excel vba excel-vba

我正在尝试获取用户手动输入的值作为整数,我必须考虑用户可能不输入整数的事实。这就是我试图捕捉类型不匹配错误的原因。但是,当我输入一个整数值时,我仍然会遇到类型不匹配错误。

这是造成此错误的一段代码。

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

2 个答案:

答案 0 :(得分:2)

Application.InputBox Method允许您指定返回的数据类型。

MSDN Application.InputBox Method (Excel)

enter image description here

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

请注意,这将接受非整数条目;不清楚这是否是一个问题。