30個のテキストボックスがある画面で、
tabindexにはそれぞれのテキストボックス1~30と
同じインデックスが振られています。
例としてテキストボックス1に入力した時、
エラーメッセージを出して、
OKを返したらテキストボックス2にカーソルが行かないで、
テキストボックス1に戻るようにするには
どのようにすれば良いでしょうか?
但しSetfocusでは無く、エラーが発生した
テキストボックスにカーソルが戻った時に、
他のテキストボックスをクリック又はTabを押した時に、
カーソルが遷移するように、カーソルを自由にコントロール
出来るようにしたいのですが。
注文が多くなってしまいましたが、書き込みをお待ちしております。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.3の補足です。
入力チェックは、LostFocusでは無く、Validateイベントで行って下さい。
Validateイベントは、TextBoxのCausesValidationプロパティがTrueに成っていれば(通常は、デフォルトでTrue)、LostFocusとほぼ同じタイミングで発生します。ただし、微妙な違いが有ります。
通常、マウスorTabキー等で、カーソル操作をしている分には差は出ないのですが、
CommandButtonにニーモニック文字をつけて(例えば&Saveなど)、Alt+ニーモニック文字を押した時(例では、Alt+s)、LostFocusより先にComanndのClickイベントが発生してしまいます。
Validateは、Clickイベントより先に発生しますので、確実にチェックできます。
それと、SetFocusをやった時に、GotFocusが発生してしまい、No.3で書いた変更有無のチェックが正しく出来なくなります。
それから、LostFocusだと、一度他にフォーカスが行っているので、次のTextなどに一瞬カーソルが表示されますが、Validateはフォーカスを移す前に発生するので、カーソルがちらつく事もありません。
後は、SetFocusの変わりに、Validateの引数にTrueを返せば、フォーカスは移動しません。
No.3
- 回答日時:
>SetFocusを使うと、tabやクリックで
>カーソルが他の入力箇所に移せませんでした。
>それだと自由に操作が出来なくなるので
>不便だなと思ったので。
>SetFocusを使っても、移せる方法は
>あるのでしょうか?
それは、SetFocusが悪いのではなく、LostFocusで無条件にチェックしているからではないでしょうか?
解決方法としては、Changeでチェックすることも出来ますが、これは1文字単位でイベントが発生したと思うので、GotFocusでTextの内容を変数に取り込んで、LostFocus時に、変数とTextを比較して、変更が有った時だけ、入力チェックをすればいいと思います。
No.1
- 回答日時:
こんにちは。
maruru01です。TabIndexを指定して、TabStopをTrueにしておけば、TabやEnterで普通に移動出来ますよね。
で、エラーメッセージを出すというのは、テキストボックスのどのイベントでのことでしょうか。
ChangeやClickイベントなら、元々そのテキストボックスにフォーカスがあるままなはずですが。
エラーが出ない場合は、自動的に次のテキストボックスに移動することになっているのでしょうか。
それと、何故SetFocusを使わないのでしょうか。
もう少し分かり易くするか、出来る範囲でコードを載せるかして下さい。
回答ありがとうございます。
エラーメッセージは、テキストボックスに
入力されたものを判定して、入力項目として
間違っていた場合返す、というものです。
イベントはlost focusで行っています。
>何故SetFocusを使わないのでしょうか。
SetFocusを使うと、tabやクリックで
カーソルが他の入力箇所に移せませんでした。
それだと自由に操作が出来なくなるので
不便だなと思ったので。
SetFocusを使っても、移せる方法は
あるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelエクセルが勝手に10MBになりました シートを沢山使ってデータを書いてました。挿入のテキス 4 2023/07/25 15:12
- Access(アクセス) Access の SetFocus について教えてください 5 2022/08/04 07:32
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- その他(Microsoft Office) パワーポイントやワード、エクセルでのスライドショーやテキストの微調整について 1 2023/01/12 05:50
- Visual Basic(VBA) Vba テキストボックスの文字列をボタンで入力するとテキストボックスの端の文字列が更新されない 2 2022/05/21 23:32
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- Visual Basic(VBA) テキストボックス1の値に対するテキストボックス2に表示する値 1 2022/04/05 14:35
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
VBAで入力数値について
-
visual basic初心者です。 visu...
-
テキストボックスとカーソルの制御
-
Excel ユーザーフォームで計算 ...
-
TEXTBOXの表示形式の変...
-
コンボボックスからテキストボ...
-
テキストボックスに大文字を
-
テキストボックスを空白にする方法
-
アクセスできない保護レベルエ...
-
VBA public変数はどのようなこ...
-
【VB6.0】 あるフォームから他...
-
VBAでcallで呼び出したsubを終...
-
VB.NETでのイベントの途中終了
-
二点の座標から距離や角度を求...
-
Functionの戻り値を配列にした...
-
C言語のサフィックスについて
-
C#のループでtextboxに値を入れ...
-
VC++ (byte)(col & 0xFF) の意味
-
配列に複数の値があるか簡潔に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
visual basic初心者です。 visu...
-
VBAで入力数値について
-
ユーザーフォームへのデータ入...
-
【VB.NET】テキストボックスに...
-
Excel ユーザーフォームで計算 ...
-
VBでの入力値制限について
-
ACCESS 除算での小数点切上げ方法
-
テキストボックスを空白にする方法
-
【C#】コンボボックスにおけるS...
-
TEXTBOXの表示形式の変...
-
visual studio 2008 C# で、値...
-
テキストボックス1の値に対する...
-
256色で任意の色を作成する時、...
-
VBAのフォーム カーソル移動
-
VBAのユーザーフォームで、テキ...
-
Vba 電卓のテキストボックスに...
-
VBSのプログラム
-
整数かどうかチェックする
おすすめ情報