有了这些2行...
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
好了,所以就没有错误输入框可处理,如果用户不输入一个整数? – derek 2013-03-04 16:04:52
不可以。您可以添加错误处理程序来在分配给'refNum'时捕获不匹配错误,通知用户并再次抛出InputBox。那是你要的吗? – HansUp 2013-03-04 16:07:02
是的,这正是我想要做的 – derek 2013-03-04 16:08:46