有了这两条线......
Dim refNum As Integer
refNum = InputBox("Please enter the Reference Number")
如果用户在 中键入以下任何内容InputBox,代码将引发类型不匹配错误。
- 字母,例如“abc”
- 大于 32767 的数字
- 没有
这样做的原因是因为它试图将InputBox值存储到一个变量,refNum,该变量被声明为Integer。然而,用户可以输入一个浮点数,并且赋值refNum将丢弃小数位。例如,如果用户输入 1.2,则 的值为refNum1。
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