- ベストアンサー
コードの変な部分を教えて欲しいです
- 個人で遊んでいたコードには非効率な部分や守るべきルールが守られていない可能性があります。
- テキストボックスにテキストを入力し、エンターキーを押すと、コマンドボタンの選択状態が意図しないコマンドボタンに移る現象が発生しています。
- 原因が分からず困っていますので、解決方法を教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
テキストボックスにフォーカスがあるときに (文字を入力したかどうかを問わず) エンターキーを押した直後、どこにフォーカスが移るかは、 xxx.SetFocus の制御で決まるのではなく テキストボックスやボタンなどのそれぞれにセットしている TabIndexの値で決まります。 おそらく、 TextBox1のTabIndexの値+1のインデックスの割り当ててあるボタンが コマンドボタン「obaba2」になっているものと思います。 都合、TextBox1のTabIndexの値を調べ obaba4のTabIndexにその次の値をセットすることで 期待の動作になると思います。
その他の回答 (3)
- HohoPapa
- ベストアンサー率65% (455/693)
TabIndexが勝手に書き換わることはありません。 なお、 テキストボックスを削除して再配置すれば多くの場合書き換わります。 >しかし何故実行後しばらくはTextBox1→obaba4なのだろう…??? これは、 Private Sub TextBox1_Change() obaba4.SetFocus End Sub があるために、 単に入力されている文字を書き換えず (あるいはNullのまま)エンターキーを押すと TabIndexに従いフォーカスが移り なにか文字を埋める(書き換わる)と obaba4.SetFocus ↑のコードが先にが動作するため、 TabIndexに従うフォーカスの移動が起きないものと思います。 どのようなタイミングで、どのように遷移すればいいのか 明示してもらえば、アドバイスが可能と思います。
お礼
ひとまず回答内容を参考にコードを整理してみます 皆様優しい回答をありがとう
- kkkkkm
- ベストアンサー率66% (1742/2617)
> テキストボックス内にテキストを入力してエンターを押した後 でしたら Private Sub TextBox1_AfterUpdate() Me.obaba4.SetFocus End Sub じゃないでしょうか。
お礼
ありがとうございます イベントはデフォルトのままで適切な物を探している最中でした 参考にさせて頂きます
- watabe007
- ベストアンサー率62% (476/760)
>テキストを入力してエンターを押した後 >Private Sub TextBox1_Change() > obaba4.SetFocus >End Sub KeyDownイベントで試してみれば Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then obaba4.SetFocus 'Enterキーを押した時の処理 End Sub
お礼
ありがとうございます イベントはデフォルトのままで適切な物を探している最中でした 参考にさせて頂きます
お礼
仰る通りでした。 感謝します! しかし何故実行後しばらくはTextBox1→obaba4なのだろう…???