Microsoft Access 掲示板

VBA IF関数 条件によって処理を中止させたい

3 コメント
views

いつもご指導いただきましてありがとうございます

テキストBOX形式のフィールドが空欄の場合は処理を
停止したく下記のように記述しましたがメッセージも表示されず
実行時エラーとなります。どこが間違っているのでしょうか?
宜しくお願いします。

  If (Eval("[Forms]![F点数入力]![参加カテゴリ] Is Null")) Then
        MsgBox "参加種目が選択されていません", vbOKOnly, ""
        Exit Sub
            Beep
End If

 Forms!F点数入力![1-1].SetFocus

追加:[参加カテゴリ]が空欄の時は[1-1]フィールドへのコントロール移動を停止
させたいのです

ヒロ
作成: 2025/11/12 (水) 07:48:20
最終更新: 2025/11/12 (水) 07:53:18
通報 ...
1

Forms!F点数入力![1-1].SetFocus

この行で実行時エラーになるのでしょうか。

また、このコードはどこのどのイベントプロシージャに設定しているのでしょうか。

Sub から End Sub までのコード全体を提示してもらえると状況を把握しやすいです。

テキストBOX形式のフィールドが空欄の場合は処理を
停止したく下記のように記述しましたがメッセージも表示されず

どのような状況のときにどのような処理をしたいのかもう少し具体的に説明してください。

[参加カテゴリ]テキストボックスにフォーカスあり未入力(Null値)のとき、他のテキストボックスに移動させたくないということでしょうか。

2

もし、テキストボックスにフォーカスある状態で未入力の場合はほかのコントロールにフォーカス移動を禁止したいという仕様がご希望なら、一般的には下記のような設計にします。

テキストボックスのフォーカス移動時のイベントプロシージャに下記のコードを設定します。

テキストボックス名が「参加カテゴリ」として、

Private Sub 参加カテゴリ_Exit(Cancel As Integer)

    If Nz(Me.参加カテゴリ.Value) = "" Then
        Cancel = True 'フォーカス移動をキャンセル
        MsgBox "参加種目が選択されていません", vbOKOnly
    End If

End Sub

これで未入力状態では他コントロールへ移動できません。

ただし、このフィールドを入力必須にしたいということなら、これでは不十分です。
このテキストボックスをとばして、他のテキストボックスへ移動したりして、レコード保存操作をすれば未入力のまま保存されます。

この場合は、テーブルデザインで入力必須の設定をするのが確実です。

3
ヒロ 2025/11/12 (水) 20:16:30 c1459@a6874

ありがとうございます

こちらの記述で思う通りにできました

Private Sub 参加カテゴリ_Exit(Cancel As Integer)

    If Nz(Me.参加カテゴリ.Value) = "" Then
        Cancel = True 'フォーカス移動をキャンセル
        MsgBox "参加種目が選択されていません", vbOKOnly
    End If

End Sub