有了这两条线......
Dim refNum As Integer
refNum = InputBox("Please enter the Reference Number")
如果用户在 中键入以下任何内容InputBox
,代码将引发类型不匹配错误。
- 字母,例如“abc”
- 大于 32767 的数字
- 没有
这样做的原因是因为它试图将InputBox
值存储到一个变量,refNum
,该变量被声明为Integer
。然而,用户可以输入一个浮点数,并且赋值refNum
将丢弃小数位。例如,如果用户输入 1.2,则 的值为refNum
1。
AnInputBox
提供对用户输入的有限直接控制。由于您是从表单中执行此操作的,因此请考虑使用未绑定的文本框 ,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