• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コードの変な部分を教えて欲しいです)

コードの変な部分を教えて欲しいです

このQ&Aのポイント
  • 個人で遊んでいたコードには非効率な部分や守るべきルールが守られていない可能性があります。
  • テキストボックスにテキストを入力し、エンターキーを押すと、コマンドボタンの選択状態が意図しないコマンドボタンに移る現象が発生しています。
  • 原因が分からず困っていますので、解決方法を教えていただきたいです。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

テキストボックスにフォーカスがあるときに (文字を入力したかどうかを問わず) エンターキーを押した直後、どこにフォーカスが移るかは、 xxx.SetFocus の制御で決まるのではなく テキストボックスやボタンなどのそれぞれにセットしている TabIndexの値で決まります。 おそらく、 TextBox1のTabIndexの値+1のインデックスの割り当ててあるボタンが コマンドボタン「obaba2」になっているものと思います。 都合、TextBox1のTabIndexの値を調べ obaba4のTabIndexにその次の値をセットすることで 期待の動作になると思います。

noname#238480
質問者

お礼

仰る通りでした。 感謝します! しかし何故実行後しばらくはTextBox1→obaba4なのだろう…???

その他の回答 (3)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

TabIndexが勝手に書き換わることはありません。 なお、 テキストボックスを削除して再配置すれば多くの場合書き換わります。 >しかし何故実行後しばらくはTextBox1→obaba4なのだろう…??? これは、 Private Sub TextBox1_Change() obaba4.SetFocus End Sub があるために、 単に入力されている文字を書き換えず (あるいはNullのまま)エンターキーを押すと TabIndexに従いフォーカスが移り なにか文字を埋める(書き換わる)と obaba4.SetFocus ↑のコードが先にが動作するため、 TabIndexに従うフォーカスの移動が起きないものと思います。 どのようなタイミングで、どのように遷移すればいいのか 明示してもらえば、アドバイスが可能と思います。

noname#238480
質問者

お礼

ひとまず回答内容を参考にコードを整理してみます 皆様優しい回答をありがとう

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

> テキストボックス内にテキストを入力してエンターを押した後 でしたら Private Sub TextBox1_AfterUpdate() Me.obaba4.SetFocus End Sub じゃないでしょうか。

noname#238480
質問者

お礼

ありがとうございます イベントはデフォルトのままで適切な物を探している最中でした 参考にさせて頂きます

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>テキストを入力してエンターを押した後 >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

noname#238480
質問者

お礼

ありがとうございます イベントはデフォルトのままで適切な物を探している最中でした 参考にさせて頂きます

関連するQ&A