
やりたい事を以下に書きます。
ユーザーフォームで入力用のTEXTBOXがいくつかあり、TABINDEXが最初のTEXTBOXから順に入力していきます。
1つのTEXTBOXに入力完了後した場合、TABキーまたは、ENTERにより次のTEXTBOXにフォーカスが移動し、最後にコマンドボタンにを押すと入力が完了するというフォームを作っています。
ただし、最初のTEXTBOXに『99』を入力すると、途中のTEXTBOXへのフォーカスの移動はしないで最後のコマンドボタンにフォーカスが移動するようにしたいと考えています。
問題点を以下に書きます。
TEXTBOXの入力完了を現在、「AfterUpdate」イベントでつかまえて、TEXTBOXの値を取得し、その値が『99』だった場合、コマンドボタンにフォーカスを移動するようにコーディングしています。
こんな感じです。(かなり省略していますが、)
Private Sub TextBox1_AfterUpdate()
If TextBox1.Value = "99" Then
CommandButton1.SetFocus
Exit Sub
End If
End Sub
この用にコーディングすると、TABINDEXが二つ後ろのTEXTBOXが入力待ち状態となってしまいます。
たとえば
TEXTBOXが3つコマンドボタンが1つのフォームだと、
TEXTBOX1に『99』と入力し、上記のコーディングだと一度コマンドボタンにフォーカスが移動したあと、最後にTEXTBOX3にフォーカスが移動して入力待ち状態となる感じです。
色々試しましたが、解決方法が見つかりません。知っている方いましたら、教えてください。
No.3ベストアンサー
- 回答日時:
こんにちは。
999とか入れる事がなければ、Changeが簡単ですね。
Private Sub TextBox1_Change()
If TextBox1.Text = "99" Then CommandButton1.SetFocus
End Sub
999も考慮すると、こんな感じでしょうか?
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And TextBox1.Value = "99" Then
CommandButton1.SetFocus
End If
End Sub
Excel97で確認しました。
ありがとうございます。
うまく行きそうですね。
他の部分との関係もあるので、参考にして試してみます。
回答ありがとうございました。
No.2
- 回答日時:
Private Sub TextBox1_Change()
に書いたんじゃ駄目ですか?
ありがとうございます。
Changeに書くのは試していますが、やはりこのTEXTに入力されるコードが1~2桁であるため、『9』と入力されたときもイベントが発生してしまうのが問題になるので使えませんでした。
回答ありがとうございました。
No.1
- 回答日時:
残りのテキストボックスに入力が必要ないのであれば、残りのテキストボックスをのTEXT.Enabled = Falseとしてみてください。
もちろんタイミングを見て、Enabled = Trueに戻してくださいね。
回答ありがとうございます。
確かに上記の方法でうまく行きますね。
現在作成中のフォームの仕様上も『99』を入力した場合は、終了という意味なので、他のTEXTは入力が規制されても良いかと思います。
他にも方法がないか、他の皆さんの回答も待ってみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
このQ&Aを見た人はこんなQ&Aも見ています
-
Userformの入力順序をタブオーダーでなく、VBAで指定したい。
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
Excel vba ListBoxについて
Excel(エクセル)
-
-
4
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
5
エクセル TABキーの動きをマクロで
Excel(エクセル)
-
6
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
7
VBAのユーザーフォームのframeとTabIndexについて
Word(ワード)
-
8
Excel ユーザーフォーム呼び出し時エラー
Excel(エクセル)
-
9
コマンドボタンのEnterイベント後に、フォーカスを移動したい。
その他(Microsoft Office)
-
10
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
11
エクセルVBA マルチページのSetFocus
PowerPoint(パワーポイント)
-
12
Escキーを押すと、中断する時としない時がある
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
C# ReadOnlyのTextBoxで
-
他の人には声だして挨拶してる...
-
コマンドボタンのEnterイベント...
-
Private Sub内でSubをCallしたい
-
GridViewでハイライトを使用し...
-
ゼロタッチPCってなんですか。 ...
-
プログラムからTera Termに文字...
-
テキストボックス入力後、警告...
-
amazonのATM支払い
-
DateTimePicker のEnable
-
油性マジックの消し方
-
VB.NET ボタン押下で一つ前の...
-
F503iにSVって表示されてるんで...
-
質問失礼します I hate how med...
-
Windowsアプリケーションのフォ...
-
矢印(左右)キーでイベントを...
-
キーボードからのチェックの入れ方
-
ユーザーフォームのSetFocusが...
-
炊飯器のセットの音と出来上が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
他の人には声だして挨拶してる...
-
どこにもフォーカスを当てたくない
-
C# ReadOnlyのTextBoxで
-
ユーザーフォームのSetFocusが...
-
エクセルVBA テキストボックス...
-
業務に差し支えのないテンキー...
-
MFCでコンボボックスを選択不可...
-
矢印(左右)キーでイベントを...
-
Accessの更新後処理で特定の条...
-
テキストボックス入力後、警告...
-
GridViewでハイライトを使用し...
-
Private Sub内でSubをCallしたい
-
油性マジックで書いたサインを...
-
コマンドボタンのEnterイベント...
-
池袋サンシャイン通りでキャッ...
-
DateTimePicker のEnable
-
プログラムからTera Termに文字...
-
マイクラのマルチサーバーが起...
-
酸素ボンベのレギュレーターか...
-
OPPO A54 5Gを使っています。 ...
おすすめ情報