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