Page 304 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼些細なことなのですが...(タブのこと) 123 02/11/7(木) 12:33 ┗Re:些細なことなのですが...(タブのこと) Jaka 02/11/7(木) 13:33 ┗難しく考えすぎました。 Jaka 02/11/7(木) 13:47 ┣Re:難しく考えすぎました。 123 02/11/7(木) 14:27 ┗Re:難しく考えすぎました。 123 02/11/7(木) 14:38 ┗Re:難しく考えすぎました。 Jaka 02/11/7(木) 15:32 ┗失礼。 Jaka 02/11/7(木) 15:44 ┗たいたび、すみません。 Jaka 02/11/7(木) 16:19 ┗タイミングがずれてしまって... 123 02/11/7(木) 16:32 ─────────────────────────────────────── ■題名 : 些細なことなのですが...(タブのこと) ■名前 : 123 ■日付 : 02/11/7(木) 12:33 -------------------------------------------------------------------------
些細なことなのですが、ちょっと不都合なことがあります。 タブについてです。 TextBoxが5つ、コマンドボタンが2つあります。 TextBox1.2.3.のタブ順は1.→2.→3.で、その次にコマンドボタン1.に 飛ぶようにしています。(プロパティのタブインデックスで設定) TextBox4.を入力後、Enterを押してFocusを移す時、 コマンドボタン1.に飛んで欲しいのですが、SetFocusで設定しても TextBox4.のプロパティのタブインデックスが7番目に設定しているので、 最初のTextBox1.に飛んでしまいます。 何かいい方法はないでしょうか。 |
こんにちは。 こんな感じでどうでしょうか? Dim Flg As Boolean Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Flg = True Then CommandButton1.SetFocus End If End Sub Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then Flg = True Else Flg = False End If End Sub |
これで良かった。 Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then CommandButton1.SetFocus End If End Sub |
▼Jaka さん: すみません。 前レスポンスを送った後にjakaさんの第2稿があるのを 見つけました。 jakaさんの言うとおり、以下のコードでできました。 ありがとうございました。 簡単そうで難しいコードだったり、難しそうなのに 簡単はコードだったり、なかなか難しいもんですねぇ。 >これで良かった。 > >Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) > If KeyCode = 13 Then > CommandButton1.SetFocus > End If >End Sub |
▼Jaka さん: もうひとつ教えてください。 なぜ、If KeyCode = 13 Then の構文を つけなかった時(私が最初にやったコード)は、 できなかったのに、If KeyCode = 13 Then を 入れることによって、できるようになったのでしょうか。 いったいこの If KeyCode = 13 Then には どんな意味があるのでしょうか。 教えてください。 数字入力でも、文字入力でも、ブランク(未入力)でも コマンドボタン1.へちゃんと飛ぶようになったので、 不思議なコードです。 >これで良かった。 > >Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) > If KeyCode = 13 Then > CommandButton1.SetFocus > End If >End Sub |
>もうひとつ教えてください。 >なぜ、If KeyCode = 13 Then の構文を >つけなかった時(私が最初にやったコード)は、 >できなかったのに、If KeyCode = 13 Then を >入れることによって、できるようになったのでしょうか。 えっ!付けなかったんですか? って、私の最初のコードですよね。 最初のは全部で、1つのプログラムだったんですけど..。 前にEnterキーを押した時に、フォーカスを自分(textbox)に戻すのに苦労してあんな感じにしたんです。 (タブキー&矢印キーで移動した場合の事も考慮して。) 結局自分にフォーカスがうまく戻せなかったんでSendKeysを戻す事にしました。 Exitイベントだけだと、タブキー&矢印キーでの移動時に不具合があるからです。 (TextBox4のフォーカスが失った時、必ずコマンドボタン1に異動するのは不便でしょうから。) で結局、自分にフォーカスを戻すわけじゃないので、KeyDownイベントだけで済んじゃったという事です。 説明って難しい。 (昔、ある自動車評論家から、おまえは文才がないって言われました。) |
SendKeysを戻す事にしました ↓ SendKeysを使って戻す事にしました 他にもあると思います...。 |
>いったいこの If KeyCode = 13 Then には >どんな意味があるのでしょうか。 >教えてください。 参考になるかなぁ? http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=11735;id=Excel http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?page=&no=11811&mode=tre&id=Excel&cmd=jmp |
▼Jaka さん: すみません。 なんか タイミングがずれてしまっていて、 jakaさんのご回答を頂く前に、また質問してしまっている ようで、失礼いたしました。 If KeyCode = 13 Then これは、Enter キーのことですね。 13を探すのにちょっと時間がかかってしまいました。 いろんなKeyを押して、最後の最後にEnterを押してみたら 13ってでました。(なんと感の悪いこと) 「なぜ、If KeyCode = 13 Then を使うのか」 納得です。 ありがとうございました。 |