2

こんにちは、ユーザーに番号の入力を求めるアクセス フォームを使用しています。以下を含むエラーを処理しようとしています。1. 入力値 = null の場合 2. 入力値が整数でない場合。以下のコードを試してみましたが、「型の不一致エラー」が発生します

 Dim refNum As Integer


 refNum = InputBox("Please enter the Reference Number")

 If IsNumeric(refNum) Then

 MsgBox ("ok")

 ElseIf refNum = Null Then

 MsgBox (" Field is empty , enter a number")

 Else


 MsgBox (" Please enter a number")


End If
4

2 に答える 2

1

この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
于 2013-03-04T15:50:04.863 に答える
0

refNum 変数はバリアントまたは文字列である必要があります。InputBox を整数として refNum に割り当てると、InputBox は整数値のみを想定するため、if ステートメントに到達する前に中断します。

文字列を使用する場合は、elseif も変更する必要があります。

ElseIf refNum = Null Or refNum = "" Then
于 2013-03-04T15:45:43.740 に答える