在VBA中处理输入框中的非整数

时间:2014-02-02 02:34:41

标签: excel excel-vba 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

2 个答案:

答案 0 :(得分:5)

使用类型为Application.InputBox的{​​{1}}会强制用户输入一个数字(为文本,范围等提供自己的错误消息)。所以你需要处理的只是1选项,即

下面的代码使用变量来处理此问题,因为使用带有 Integer 的<{1}}或 Long 给出0 - 这可能是有效的条目。< / p>

Cancel

更长的选项

测试输入的变量是否大于0

Cancel

答案 1 :(得分:0)

在你的例子中,'need'是一个整数数据类型,所以它总是一个整数。

看看这个:

Sub test()
  x = Range("A1").Value
  If Int(x) / x = 1 Then
    MsgBox "Value is an Integer"
  Else
    MsgBox "Value is not an Integer"
  End If
End Sub

或假设A1在任何其他单元格中有数字,放置公式:

=IF(INT(A1)=A1,"True","False")