您好我正在使用访问表单,要求用户输入一个号码。我正在尝试处理包括的错误; 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
答案 0 :(得分:1)
这两行......
Dim refNum As Integer
refNum = InputBox("Please enter the Reference Number")
如果用户在InputBox
中键入以下任何内容,则代码将引发类型不匹配错误。
原因是它试图将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