处理用户输入时出错

时间:2013-03-04 15:16:03

标签: ms-access

您好我正在使用访问表单,要求用户输入一个号码。我正在尝试处理包括的错误; 1.如果输入的值= null,则2.如果输入的值不是整数。我已尝试使用下面的代码,但仍然出现“类型不匹配错误”

 Dim refNum As Integer


 refNum = InputBox("Please enter the Reference Number")

 If IsNumeric(refNum) Then

 MsgBox ("ok")

 ElseIf refNum = Null Then

 MsgBox (" Field is empty , enter a number")

 Else


 MsgBox (" Please enter a number")


End If

2 个答案:

答案 0 :(得分:1)

这两行......

Dim refNum As Integer
refNum = InputBox("Please enter the Reference Number")

如果用户在InputBox中键入以下任何内容,则代码将引发类型不匹配错误。

  • 字母,例如“abc”
  • 大于32767的数字
  • 没有

原因是它试图将InputBox值存储到变量refNum,该变量被声明为Integer。但是,用户可以输入浮点数,而refNum的赋值将丢弃小数位。例如,如果用户输入1.2,则refNum的值将为1.

InputBox提供对用户输入的有限直接控制。由于您是从表单执行此操作,因此请考虑使用未绑定的文本框txtRefNum来收集用户的值。检查值在更新前的文本框中,显示消息中包含不可接受的值以及Cancel更新。

在评论中,您表示您希望“错误处理程序在分配给refNum时捕获不匹配错误,通知用户,并再次抛出InputBox。”在这种情况下,此代码做你想做的。

    Dim refNum As Integer
    Dim strMsg As String

On Error GoTo ErrorHandler

    refNum = InputBox("Please enter the Reference Number")
    MsgBox "ok"

ExitHere:
    Exit Sub

ErrorHandler:
    Select Case Err.Number
    Case 13 ' type mismatch
        MsgBox "Reference NUMBER!"
        Resume ' present InputBox again
    Case Else
        strMsg = "Error " & Err.Number & " (" & Err.Description & ")"
        MsgBox strMsg
        GoTo ExitHere
    End Select

答案 1 :(得分:0)

您的refNum变量必须是变量或字符串。当您将InputBox指定为refNum作为整数时,您的InputBox只需要整数值,因此在转到if语句之前会中断。

如果你使用字符串,你还需要更改你的elseif。

ElseIf refNum = Null Or refNum = "" Then