• 締切済み

Accessテキストボックスの未入力チェック

いつも参考にさせて頂いております。 Accessテキストボックスの未入力チェックで上手くいかず悩んでいます。過去の情報等調べましたが、わかりませんでした。 どなたか宜しくお願い致します。 フォーム1にテキストボックス1、ボタン1があります。 テキストボックスを何も入力せず、Enter等で移動する時にチェックをかけたいです。 もし、テキストボックスに何も入力がなかったら、メッセージを出し、フォーカスをテキストボックスに戻す。 何か入力があれば、ボタンにフォーカスが移動する。 If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Me.テキストボックス1.SetFocus End If 宜しくお願い致します。

みんなの回答

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

#1です > 何か設定が悪いのでしょうか? 判りません 新規に、MDBファイルを作成し、新規フォームで行っても、同じでしょうか? 要は、他との兼ね合いなのか、Acc自身の問題なのか? 先に、自分で、デバッグ&確認してみてください

michaelme
質問者

お礼

Dxakさん、新規テキストボックスではうまくいきましたが、同じように作り変えると、またできませんでした。 新規で作ればできるので、いろいろと試してみたいと思います。 ありがとうございました。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

#1です コピペして、気がつかなかったけど・・・ > If IsNull(Me.テキストボックス1) = "" Then If IsNull(Me.テキストボックス1) Then だね 「=""」は、IsNullで、戻ってくる値じゃないから、反応しない^^;

michaelme
質問者

お礼

Dxakさん早速のご返事ありがとうございます。 教えて頂いたとおりしましたが、だめでした。 フォームを開いてそのまま何も入力せずEnterを押すと、そのまま移動します。 1度文字を入力して、それを消すと”未入力”と判断してくれます。 何か設定が悪いのでしょうか?

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

テキストボックスのフォーカス喪失時に Private Sub テキストボックス1_Exit(Cancel As Integer) If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Cancel = True End If End Sub で、良さそうですが・・・

関連するQ&A

  • テキストボックス入力後、警告メッセージを表示し、フォーカスを移動させない方法について

    テキストボックスの入力チェックを行うために下記のようなソースを記述しました。 下記を実行するとテキストボックスにどんな文字を入力してもメッセージボックスを表示し、 フォーカスが移動しない形となっております (厳密にはボタンにフォーカスが移動した後、テキストボックスにフォーカスを移動しています)。 これは Me.テキストボックス.SetFocus のみを記述した所、次の場所にフォーカスが移動してしまい、 下記のように書くとフォーカスが移動していないように見えるため、このようにしました。 ただこの記述はいささか強引な感じなので、これを改良したいと思っております。 2回フォーカスを移動させるのではなく、フォーカス移動を抑止する方法がベストと思いますが、 方法が分からなかったので、何かしらアドバイスをいただけれる方がいらっしゃいましたらよろしくお願いします。 【ソース】 Private Sub テキストボックス_AfterUpdate() MsgBox "エラー" Me.ボタン.SetFocus Me.テキストボックス.SetFocus End Sub 以上、よろしくお願いします。

  • テキストボックスの入力チェック(ACCESS VBA)

    テキストボックスに何かを入力し、フォーカスが他のものに移動したときに、LostFocusイベントで入力内容のチェックをかけています。(文字数チェック、ストアドをつかって入力内容と一致するものがDBにあるかなど) もし、入力が誤っている場合には他のものにフォーカスを移さず、そのテキストボックスにフォーカスを残したい(setfocusを使用)のですが、setfocusをしてもlostfocusされてしまうため、うまくいきません。 VBではValidateイベントというものがあるようですが、 VBAではみあたりません。 どなたかよい方法をご存知でしたら教えてください。

  • Accessの更新後処理で特定の条件を満たしている場合、フォーカスを移動させない方法

    テキストボックスの更新後処理で下記のような記述をし、 テキストボックスに1が入力された場合、エラーメッセージを表示した上で、 フォーカスを一度ボタンに移動した後、テキストボックスに移動しております。 SetFocusを二回記述している理由ですが、 フォーカス移動を抑止する為に、Me.テキストボックス.SetFocus のみを記述した所、次の場所にフォーカスが移動してしまい、 下記のように書くと元の場所にフォーカスが戻ってくる為です。 フォーカス喪失時(Exit)の場合、Cancelを使用すればフォーカスの移動を抑止できたのですが、 更新後処理(AfterUpdate)でSetFocusを2回書く以外に フォーカスを移動させない方法をご存知の方がいらっしゃいましたら アドバイスいただければと思います。 ★クラスモジュール Private Sub テキストボックス_AfterUpdate() Call CHECK_TEXT(Me, Me.テキストボックス.Value) End Sub ★標準モジュール Function CHECK_TEXT(MeForm As Form, text As String) If text = 1 Then MsgBox "エラー" MeForm.ボタン.SetFocus MeForm.テキストボックス.SetFocus End If End Function 以上、よろしくお願いします。

  • access setfocusについて

    いつもお世話になっております。 いろいろ調べたのですが行き詰っておりまして ご教授お願いします。 下記記述でsetfocusでエラーになってしまいます。 Private Sub コマンド_Click() If IsNull(Me.テキストボックスコントロール名) Then MsgBox "未入力です" Me.テキストボックスコントロール名.SetFocus End If テキストボックスの処理記述 End Sub https://www.moug.net/tech/acvba/0030005.html こちらを参考にしました。 よろしくお願いします。

  • AccessのエラーチェックでFキーcmdボタンから反映されない

    こんにちは! 質問なのですが、Accessの入力フォームでエラーチェックをかけてます。 「txtMsg」って名前のテキストボックスを1つ用意してエラーの内容を 反映させてます。チェックの内容ですが、Nullチェックと文字数チェック ・禁止文字チェックをかけてます。 >エラーはちゃんと反映します。SetFocusでカーソルをエラー個所に立て て修正します。ここからが問題なのですが、エラー個所を修正したママの 状態(修正個所にFocusがある状態)でFキーcmdボタンの「更新」ボタン を押してもテキストボックスにエラーが出たママなんです。 ちなみにFキーを使用できるようにcmdボタンを12個並べて使っております。 >状況 ・Fキーを使用して更新した場合のみエラー表示が消えない。 >たぶんfocusが移動してないからかな? >Me.事項.SetFocusのような作業が出来ない状況(現状の >txtBOXの「Enterキー入力動作」を「行を追加」にして >いる為)で、Fキーを使用しつつ更新出来るようにするには? ・クリックで「更新」ボタンを押すとちゃんと更新される。 ってわけで困ってます。 何かいい方法を知っていらしゃいましたらご教授願います。 '------------------必須項目の未入力チェック------------------- Me.txtMsg = "" If IsNull(Me.郵便番号) Or Me.郵便番号 = "" Then Me.txtMsg = "郵便番号データが未入力です。( ̄▽ ̄;)!!" Me.郵便番号.SetFocus Exit Sub End If '--------------------図版CD文字数チェック-------------------- strYbn = Len(Me.郵便番号) If strYbn <> 10 Then Me.txtMsg = "『〒000-0000』形式にして下さい! (´∞`)" Me.郵便番号.SetFocus Exit Sub End If

  • ACCESS

    現在以下のシステムを検討しています。 (1)ログインフォームと(2)トップフォーム(3)注文フォームが別々に存在しており、 (1)ログインフォームは  ・ログインID入力用のテキストボックスが一個  ・パスワード入力用のテキストボックスが一個  ・ログインボタンが1個  設置されています。 以下はログインボタンクリック時に動作するプログラムです。 Private Sub cmdLogIn_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "IDを入力してください" Me.txtID.SetFocus Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "パスワードを入力してください" Me.txtPass.SetFocus Exit Sub End If Res = DLookup("パスワード", "T顧客", _ "顧客ID='" & Replace(Me.txtID, "'", "''") & "'") If IsNull(Res) Then MsgBox "該当するIDはありません。正しいIDを入力してください。" Me.txtID.SetFocus Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "注文フォーム" '----ID,pass合致でフォームを開く。 Me.txtID = Me.txtID2 Me.txtPass = Me.txtPass2 DoCmd.Close acForm, "Fログイン" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical Me.txtPass.SetFocus End If End Sub (2)トップフォームは  商品のリストが画像付き(商品一個につき画像一個)  で示され、画像を押すと商品別に作成してある注文フォームに進むのですが、  ログイン完了していないとログインを促すメッセージが出て注文フォームが開かないよう  にしています。  トップフォームにはテキストボックスを2個不可視の状態で配置しております。  以下は商品画像に埋め込んであるコマンドです。 Private Sub 商品画像 1_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "ログインしてください" Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "ログインしてください" Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "商品名" '----ID,pass合致で注文フォームを開く。 End If End Sub   (3)注文フォームは  ・数量選択のコントロールボックス  ・注文ボタン  ・キャンセルボタン  を設置しています。 【以下が質問内容になります】 「ロフインフォーム」内の入力値(テキストボックスに入力されていたIDやパスワード値)を注文フォーム内のテキストボックスに取得させる(あるいは設定させる)にはどのようにすればよいのでしょうか? 注文フォームにはテキストボックス2個( ID入力用と Password入力用)を不可視で配置しています。こちらのテキストボックス2個については手動入力は行わず、注文フォームが開いた際にログイン時の ID, Paswordがテキストボックスの中に自動的に入力あるいは設定されるようにしたいのですが、どのようにすればよいかがわかりません。 因みにログイン ID,Passwordは複数セットあり、ユーザーがログイン完了後、注文フォームを閉じるまでの間は 同一のID, Paswordの内容を保持したいと考えています。 上記の中にID,Paswordを保持させるようなコードを入れることは可能でしょうか? 注文フォームを開く際のコードに何か入れることができるのではないかと考えていたの ですが、よい案が浮かびません。 他によいやり方などがあれば教えていただけますでしょうか? よろしくお願いします。

  • Accessのチェックボックス

    こんにちは。AccessのVBAについてお教えください。 下記URLに質問内容の画像を配置しました。 http://kie.nu/tli フォーム1にテキストボックス1というコントロールを配置しました。テキストボックス1に名簿IDの数値を入力して、ボタン1をクリックします。 もしチェックボックス1に既にチェックが入っていたらメッセージ「チェックが既に入っています。」といったメッセージを表示したいと思います。 そこで、ボタンを押した時に、 If フォーム1!サブフォーム1!チェックボックス1.Value = -1 Then msgbox "チェックが既に入っています。" end if とやりましたが、うまく動きません。どうやれば、うまく動くようになりますかご教授頂けませんでしょうか。よろしくお願いいたします。

  • ACCESS テキストボックスの入力値削除

    こんにちは。ACCESSの初心者です。 現在ACCESSを使ってとある一覧表の入力フォーマットを作成しております。 早速ですが質問です。 フォームのテキストボックスにて入力チェックをしており、間違った値が入力されると、メッセージボックスを出し、その間違った入力値を削除し、カーソルをそのテキストボックスに戻す、ようにしたいのですがどうすればいいのでしょうか? ちなみに現在以下のようなソースを作成しているのですが、(1)と(2)のところがどうすればいいのかわかりません。 If 正しい入力値 then 次のテキストボックスへ移動 else msgbox("入力値エラー") 入力値削除(1) カーソルを戻す(2) end if よろしくお願いします。  

  • アクセス2007 入力済テキストBOXをコンボ変更

    いつもお世話になっております。アクセス初心者です。 エクセルに入力済みの送料(経費)をアクセス2007にインポートし、 入力用のデータファイルを作成しております。 データは、郵送テーブルとメール便テーブルにわけ、それぞれ、別のフォームを作成しました。 フォームは、「ID」「発送日」「送付先」「送付ツール」「単価」「送付数」「合計」「備考」を それぞれテキストボックスにて表示してあります。 データをエクセルからインポートしたため、郵送フォームルも、メール便フォームも、最初からある程度データが入っており、「発送ツール」(定形・定形外・ゆうパック等)のテキストボックスや、「単価」のテキストボックス(80円・160円等)にも、データが入ったままです。 しかし、今後、このフォームを使い、データを追加していく場合、「発送ツール」や、「単価」は、テキストボックスに直接入力ではなく、コンボボックスでプルダウンメニューを表示していくやり方にしたいのですが、変更の仕方がわかりません。 仕様としては、「発送ツール」で、「定形・定形外・ゆうパック」等選んだ場合、「単価」が自動表示されるのではなく、「単価」も「80円・120円・380円」等から任意で選び、ありえない組合せの場合には、メッセージボックスで、「その組合せはできません」のような表示がされるようにしたいのです。 現在、「単価」と「送付数」にはそれぞれ、VBAで以下のプログラムを入力して、「合計」が表示されるようにプログラムしてあります。(見よう見まねで作成し、とりあえず動いてます) Private Sub 送付数_AfterUpdate() If Not IsNull(Me![送付数]) And Not IsNull(Me![単価]) Then Me![合計] = Me![単価] * Me![送付数] ElseIf IsNull(Me![送付数]) Then Me![合計] = Null MsgBox "送付数を入力して下さい" End If End Sub Private Sub 単価_AfterUpdate() If Not IsNull(Me![送付数]) And Not IsNull(Me![単価]) Then Me![合計] = Me![単価] * Me![送付数] ElseIf IsNull(Me![単価]) Then Me![合計] = Null MsgBox "単価を入力してください" End If End Sub 現在、このVBA以外は、クエリも作成しておりません。 (初心者なので、クエリとかも良くわからない。) それで、「単価」や「発送ツール」のデータを残したまま、コンボボックスでプルダウンメニューを新たに作製する方法を教えてください。 よろしくお願いいたします。

  • テキストボックス 空白確認

    エクセル VBAで コマンドボタンをクリックすると テキストボックスに空白があった場合 空白のテキストボックスにセットフォーカスしたいのですが 下記のように少ない場合は まだいいですが 多くなってきたとき見易さの面でも簡単にしたいのですが VBだとコントロール配列のインデックス値をループ処理 すればよいと思いますがVBAだとどのようにすればいいのでしょうか? Private Sub CommandButton3_Click() If TextBox2 = "" Then TextBox2.SetFocus ElseIf TextBox3 = "" Then TextBo3.SetFocus ElseIf TextBox4 = "" Then TextBox4.SetFocus ElseIf TextBox5 = "" Then TextBox5.SetFocus End If 御願いします。