Microsoft Access 掲示板

FORMの入力漏れ防止について

4 コメント
views
4 フォロー
Public Function 入力漏れ() As Boolean
 Dim myCtrl As Control

 For Each myCtrl In Screen.ActiveForm.Controls
        If myCtrl.Name Like "txt*" Then
         If IsNull(myCtrl.Value) Then
            MsgBox "入力必須項目に入力漏れがあります"
            入力漏れ = True
            Exit Function
         End If
        End If
    Next
  入力漏れ = False

End Function

https://zawazawa.jp/ms-access/topic/621

このURLで、ご教示していただきました。

Nullは防止できます。

このコードに空白も、反応するようにしたいのです。

対象のテキストボックスは、FORMを読み込んだ時は、Nullです。
そのテキストボックスに、入力して、訂正した場合、そのテキストボックスは、Nullでなくなります。

Debug.Printで判定したら、0が返ってきました。

Public Function 入力漏れ() As Boolean
 Dim myCtrl As Control

 For Each myCtrl In Screen.ActiveForm.Controls
        If myCtrl.Name Like "txt*" Then
         If IsNull(myCtrl.Value) Then
         If Len(myCtrl.Value=0) Then
            MsgBox "入力必須項目に入力漏れがあります"
            入力漏れ = True
            Exit Function
         End If
        End If
    Next
  入力漏れ = False

End Function

このようにしましたが、空白には反応しません。

Isemptyなどためしたのですが、上手くできません。

お手数ですが、Nullまたは、空白の時、反応するコードを、ご教示お願いします。
よろしくお願いします。

hideki
作成: 2022/02/17 (木) 21:58:49
通報 ...
1
hiroton 2022/02/18 (金) 08:10:08 35f9a@f966d

コードをコピペしてデバッグ→コンパイルをしたらエラーになりました
それは実際に使っているコードですか?

2
naonao 2022/02/18 (金) 09:08:37

回答ありがとうございます。
実際に利用しています。

3

「Null または、空白の時、反応するコード」ということなので、Or条件になります。

    If myCtrl.Name Like "txt*" Then
        If IsNull(myCtrl.Value) Or Len(myCtrl.Value = 0) Then
            MsgBox "入力必須項目に入力漏れがあります"
            入力漏れ = True
            Exit Function
        End If
    End If

あるいは、Nz関数を使うと Null を適切に変換してくれますので、下記でもOKです。

    If myCtrl.Name Like "txt*" Then
        If Nz(myCtrl.Value) = "" Then
            MsgBox "入力必須項目に入力漏れがあります"
            入力漏れ = True
            Exit Function
        End If
    End If
4
hideki 2022/02/20 (日) 23:17:27 7cbc1@96514

ありがとうございました。
できました。