Microsoft Access 掲示板

エラーメッセージを回避したい

2 コメント
views
4 フォロー

お世話になります。

フォームのテキストボックスに数値型のフィールドをレコードソース設定しています。
そのテキストボックスに負の値をいれることがありますが、ユーザーが誤って―(マイナス)の1字のみ入力し、Enterキーを押す等でフォーカスを移動しようとすると、Access側から添付のようなメッセージが出ます。

画像1

これではユーザーには親切ではないので、オリジナルのメッセージを出そうと思い以下のコードを書きました

Private Sub テキストA_LostFocus()
 DoCmd.SetWarnings False
If Me.テキストA= "-" then
 Msgbox "数値を入力して下さい"
 Me.テキストA.SetFocus
Else
End if
  DoCmd.SetWarnings True
End Sub

ところがなんの変りもなく上のメッセージが出てしまいます。
回避策ありませんでしょうか?
そもそもコードが間違っているのでしょうか?

どなたかご教授よろしくお願いいたします。

nuneru
作成: 2023/04/13 (木) 09:06:16
通報 ...
1

LostFocusイベントが発生する前にエラーメッセージが出ますので、LostFocusイベントでは手遅れですね。
LostFocusイベントより前に発生するBeforeUpdate(更新前処理)イベントでも手遅れです。

どうするかというと、フォームの方の「エラー時」イベントで処理します。

Form.Error イベント (Access) | Microsoft Learn

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    If DataErr = 2113 Then 'データ型違反
        Response = acDataErrContinue '規定のエラーメッセージを出さない
        MsgBox "数値を入力して下さい"
    End If
    ActiveControl.Undo '元に戻す
End Sub
2
nuneru 2023/04/14 (金) 09:20:01 e48ae@9a838

ありがとうございます。やりたいことができました!