この2行で…
Dim refNum As Integer
refNum = InputBox("Please enter the Reference Number")
ユーザーが に次のいずれかをInputBox入力すると、コードは型の不一致エラーをスローします。
- 文字、例えば「abc」
- 32767 より大きい数値
- なし
その理由は、として宣言されInputBoxた変数 に値を格納しようとするためです。ただし、ユーザーは浮動小数点数を入力することができ、への代入は小数点以下の桁数を破棄します。たとえば、ユーザーが 1.2 を入力すると、の値は1 になります。refNumIntegerrefNumrefNum
は、ユーザーの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