過去ログ

                                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.に飛んでしまいます。

何かいい方法はないでしょうか。
 ───────────────────────────────────────  ■題名 : Re:些細なことなのですが...(タブのこと)  ■名前 : Jaka  ■日付 : 02/11/7(木) 13:33  -------------------------------------------------------------------------
   こんにちは。
こんな感じでどうでしょうか?

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
 ───────────────────────────────────────  ■題名 : 難しく考えすぎました。  ■名前 : Jaka  ■日付 : 02/11/7(木) 13:47  -------------------------------------------------------------------------
   これで良かった。

Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    CommandButton1.SetFocus
  End If
End Sub
 ───────────────────────────────────────  ■題名 : Re:難しく考えすぎました。  ■名前 : 123  ■日付 : 02/11/7(木) 14:27  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:難しく考えすぎました。  ■名前 : 123  ■日付 : 02/11/7(木) 14:38  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:難しく考えすぎました。  ■名前 : Jaka  ■日付 : 02/11/7(木) 15:32  -------------------------------------------------------------------------
   >もうひとつ教えてください。

>なぜ、If KeyCode = 13 Then の構文を
>つけなかった時(私が最初にやったコード)は、
>できなかったのに、If KeyCode = 13 Then を
>入れることによって、できるようになったのでしょうか。

えっ!付けなかったんですか?
って、私の最初のコードですよね。

最初のは全部で、1つのプログラムだったんですけど..。
前にEnterキーを押した時に、フォーカスを自分(textbox)に戻すのに苦労してあんな感じにしたんです。
(タブキー&矢印キーで移動した場合の事も考慮して。)
結局自分にフォーカスがうまく戻せなかったんでSendKeysを戻す事にしました。

Exitイベントだけだと、タブキー&矢印キーでの移動時に不具合があるからです。
(TextBox4のフォーカスが失った時、必ずコマンドボタン1に異動するのは不便でしょうから。)

で結局、自分にフォーカスを戻すわけじゃないので、KeyDownイベントだけで済んじゃったという事です。

説明って難しい。
(昔、ある自動車評論家から、おまえは文才がないって言われました。)
 ───────────────────────────────────────  ■題名 : 失礼。  ■名前 : Jaka  ■日付 : 02/11/7(木) 15:44  -------------------------------------------------------------------------
   SendKeysを戻す事にしました
  ↓
SendKeysを使って戻す事にしました

他にもあると思います...。
 ───────────────────────────────────────  ■題名 : たいたび、すみません。  ■名前 : Jaka  ■日付 : 02/11/7(木) 16:19  -------------------------------------------------------------------------
   >いったいこの 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
 ───────────────────────────────────────  ■題名 : タイミングがずれてしまって...  ■名前 : 123  ■日付 : 02/11/7(木) 16:32  -------------------------------------------------------------------------
   ▼Jaka さん:

すみません。
なんか タイミングがずれてしまっていて、
jakaさんのご回答を頂く前に、また質問してしまっている
ようで、失礼いたしました。

  If KeyCode = 13 Then

これは、Enter キーのことですね。
13を探すのにちょっと時間がかかってしまいました。
いろんなKeyを押して、最後の最後にEnterを押してみたら
13ってでました。(なんと感の悪いこと)

「なぜ、If KeyCode = 13 Then を使うのか」
納得です。

ありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 304