• ベストアンサー

テキストボックスの項目チェックをする場合どのイベントで?

テキストボックスの入力内容が妥当か判断する場合はどのイベントで行いますか? 理想はチェックをしてエラーであれば、別のコントロールにフォーカスを移動させずに、現在のテキストボックスにフォーカスがある状態にしたいのです。 ACCESSのBeforeUpdateのようにキャンセルもでき、別のコントロールにフォーカスが移らずチェックするにはどのイベントでチェックすればよいですか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#5584
noname#5584
回答No.1

VB5.0以前なら_LostFocusイベントで、 6.0なら_LostFocusイベント、または、_Validateイベントで行うのが一般的なようです。 (.NETについては、識者のフォローを希望) ただし、どちらのイベントも、値の変更に関係なく、フォーカスの移動のみで発生しますので、値の変更を監視する場合は、_Changeイベントを使用してフラグを立てる等の工夫が必要になります。

matyap
質問者

補足

LostFocusイベントでチェックして、エラーの場合、フォーカスを移さないようにするにはどのようにすればよいか教えてくださいますか? 今、LostFocusイベントでSetFocusしているので、再度GotFocusが動いてしまいます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#11856
noname#11856
回答No.2

結構前の質問なので今更かも知れませんが・・・。 #1さんの回答にもある _Validate イベントは試しましたか? これならCancel出来ますよ。

matyap
質問者

お礼

ありがとうございます。 VB5.0を使っております。_Validateイベントはないのですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

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

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

  • チェックボックスのオンフォーカスについて

    チェックボックスにフォーカスが当たると、テキスト部にフォーカスが当たると思われるのですが、現開発ではチェックボックスのテキストプロパティには何も入力をしない仕様になってしまいました。 当然、Tab移動時等で該当するチェックボックスにフォーカスが当たってるのですが、外見ではフォーカス状態がわかりません。 フォーカスをテキスト部ではなく、チェックする部分にフォーカスを当てる方法はありませんでしょうか? どなたか、ご教授をお願いいたします。

  • テキストボックスに値を入力し終わったらイベントを発

    エクセル2007を使用しています。 アクセスで言う「更新後処理」のAfterUpdateイベントは エクセルのActiveXコントロールのテキストボックスイベントにはないのでしょうか? 例えば、テキストボックスに「aiu」と入力し終わったらイベントを発生させたいのですが、 Private Sub TextBox1_Change() MsgBox "" End Sub にしすると 「a」を入力した時点で、MsgBox が表示されてしまいます。 テキストボックスに値を入力し終わったらイベントを発生させる方法はありますか? VBE画面でシートイベントを見ても AfterUpdateイベントは見当たりません。 ご回答よろしくお願いします。

  • テキストボックスの値変更時のイベント

    フォーム上のテキストボックスに、前の画面で入力したデフォルト値が表示されている状態で、テキストボックスの値を変更したらJavaScriptの関数でチェックさせたいと考えているのですがうまくいきません。 onChangeイベントは値を変更(例えば削除するなど)して、Enterキーを押すなりフォーカスを移すなりしないとイベントが発生しないので、変更されたら即座にチェックということができません 何かうまい方法はないでしょうか?

  • テキストボックスにフォーカスを当てる?

    こんばんは,すみませんよろしくお願いします。 テキストボックスにフォーカスを当てるには,例えば, TextBox1.SetFocus のようにするんだと思うのですが,テキストボックスに初期値が設定されていたときには,上記のようにすると,初期値のテキストの右側に線のようなポインタがテキストコントロール内にでてきます。 しかし,このような状態では,いったん初期値を消さないと,別の値に書き換えることは出来ません。 テキストコントロール内に初期の値として,何らかのテキストが入力されているとき,文字列が選択された状態になっていれば,即,別の値を入力することが出来ますので,ユーザーフォームをshowしたときに,テキストボックス内の初期値 (例えば,「ここに名前を入力してください」などの文字列) を選択した状態にしたいのです。どのようにすれば良いのでしょうか?何度もすみません。

  • VBA テキストボックスのイベントについて

    Microsoft ACCESS 2010を使用しています。 「テキスト0」という名前のテキストボックスがあり、 Me![テキスト0].Value = "こんにちは" というコードでテキストボックスの文字を変更します。 この時、テキストボックスの値が変更されたという条件でまた別のコードを動作させたいのですが、テキストボックスのイベントである、「更新前処理」「更新後処理」「ダーティー時」「変更時」では、動作しませんでした。 テキストボックスの値を変更する段階で別のコードを入力すれば対応は可能なのですが、「テキストボックスの値を変更した時」のタイミングで別コードを動作させることで、コードをまとめたいと考えています。 これに対して良い方法はありますか?よろしくお願いします。

  • テキストボックスの内容でチェックボックスの既定値

    下記質問の続きです。 http://okwave.jp/qa/q8186736.html Accessで、 チェックボックスにチェックを入れることで テキストボックスに文字を表示させています。 そのフォームをいったん閉じると、 テキストボックスには 前回チェックボックスで入力した文字が反映されているのですが チェックボックスのチェックがすべて外れてしまっています。 フォームを開いたとき、 テキストボックスの内容によって、 配置したチェックボックスにチェックを入れたいです。 テキストボックスに 「A C」 と入っていたら ■A □B ■C □D □E としたいです。 (開いたあとは、また別の所にチェックを入れたり外したりします) チェックボックスのプロパティ「既定値」のところに IF([テキストボックス] like "*"&"A"&"*",ture,false) などとしてみたのですがうまういきませんでした。 ご教授お願いいたします!

  • テキストボックスの入力チェック。

    Version 6.0 です。 テキストボックスに入力された値の中に任意の文字があるかどうかを判断する関数というのはあるでしょうか?InStrとかでやってみたのですが、If文を繰り返すことになってしまい、見難い状況です。 2つのテキストボックスに年月を入力させ、 "yyyymm"、"yyyym"、"yyyy/mm"、"yyyy/m" が入力可。入力した文字列に"/"があるかないかを判断し、あればそのままでIsDateでチェック。なければ、"/"を入れてIsDateでチェック、とさせたいです。 何か簡単なコードの書き方等あれば、ぜひ教えてください。分かり難いところがあれば、補足します。よろしくお願いします。

  • テキストボックスに入力するとチェックボックスのチェックが入るようにするには

    Excelのユーザフォームについて質問させていただきます。 チェックボックスとテキストボックスがそれぞれ複数あります。 テキストボックスに入力すると、横にあるチェックボックスに 自動的にチェックが入るようにしたいのですが、 どのようにすればいいのでしょうか。