![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?8acaa2e)
下記の「エクセル VBA タブストップに対する質問」に書き込みした者ですが、一難去ってまた一難です。又、暗雲が漂ってきました。
条件は下記といっしょで
テキストボックスが1~5まであり、テキストボックス2~4まではデータが入っています。
全てのTabStopはTrue、TabIndexは順に1~5が入っています。
テキストボックス1に何もデータを入れないで、Enterが押された場合、
テキストボックス1をアクティブにしたいのですが、下記で質問した回答で動かしても、きちんと動いてくれません。
どうかご指導よろしくお願いいたします。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then 'ENTER
If TextBox1.Value = "" Then
TextBox1.SetFocus
End If
End If
End Sub
このコードでテキストボックス1に何も入れずにEnterを押すとテキストボックス2がアクティブになってしまいます。
No.3ベストアンサー
- 回答日時:
KeyDownでKeyCodeを適切な値に変更しないのが原因でしょう
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then 'ENTER
If TextBox1.Value = "" Then
KeyCode = 0 ' デフォルトの処理をさせなくないなら
' TextBox1.SetFocus ' これも必要ないです
End If
End If
End Sub
回答、有難うございます。
pkh4989先生のコードでも良かったのですが、以前、ユーザーフォームの「Hide」と「Unload」と「Show」の組み合わせで、オートメーションエラーが出て、かなり悩まされましたので、正直、あまり使いたくありませんでした。
これからもご指導よろしくお願いいたします。
有難うございました。
No.2
- 回答日時:
Exitイベントで処理すればいいのでは …
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Text = "" Then
Cancel = True
End If
End Sub
とすれば TABキーでもEnterキーでもマウスのクリックでも移動できません
回答、有難うございます。
Exitイベントは勉強不足で、まだ一度も使ったことがありません。
こういう使い方があるのかと、勉強になりました。
以前組んだプログラムにテキストボックスにデータを入れないと先に進めないようする。というのがあったような記憶があるのですが、このコードでもOKと思います。
しかし、今回はマウスをクリックしても動かないという事が致命的なのでNGでした。
又、何かあれば、よろしくお願いいたします。
No.1
- 回答日時:
お早うございます。
良い方法が見つからないので、取りあえず、以下のようにしてみてください。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then 'ENTER
If TextBox1.Value = "" Then
UserForm1.Hide '←追加
TextBox1.SetFocus
UserForm1.Show '←追加
End If
End If
End Sub
回答、有難うございます。このコードで、きちんと動きました。
今回の質問は調べるにも、どう調べれば良いか解らなかったので、すごく助かりました。
又、何か解らないことがあれば、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
条件に該当したテキストボック...
-
VBAのユーザーフォームで、テキ...
-
Vba テキストボックスの文字列...
-
VBAで入力数値について
-
VBSのプログラム
-
テキストボックスに大文字を
-
【VB.NET】テキストボックスに...
-
VBでの入力値制限について
-
ユーザーフォームへのデータ入...
-
VB2010 TextBoxの数字の表示...
-
VB2005テキストボックスへのコ...
-
エクセル VBA タブストップに...
-
VBでテキストボックスの文字を...
-
アクセスできない保護レベルエ...
-
16進数
-
C言語のサフィックスについて
-
複数条件のオートフィルタ(VBA)
-
VB.NETでのイベントの途中終了
-
VBA public変数はどのようなこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
VBAで入力数値について
-
【VB.NET】テキストボックスに...
-
VBでの入力値制限について
-
テキストボックスに大文字を
-
visual basic初心者です。 visu...
-
ユーザーフォームへのデータ入...
-
Excel ユーザーフォームで計算 ...
-
コンボボックスからテキストボ...
-
VBAのフォーム カーソル移動
-
テキストボックスを空白にする方法
-
VB2010 TextBoxの数字の表示...
-
【C#】コンボボックスにおけるS...
-
VBでローマ字入力とかな入力を...
-
VB2005テキストボックスへのコ...
-
VBAのユーザーフォームで、テキ...
-
整数かどうかチェックする
-
Xcodeのテキストボックスの値に...
-
VB.NETのテキストボックスで、...
おすすめ情報