タイトル : エンターKeyでFocus移動 投稿日 : 2009/11/13(Fri) 07:49 投稿者 : ケイ
いつも楽しく拝見させています。 時折、質問させて頂いてるケイと申します。環境:WInXP(SP2) 本日はExcel2003_VBAにおいてですが、ここでいいのでしょうか? もし、まずければ、お手数お掛けしますが削除してください。 【準備】 UserFormに ・TextBox1 (TabIndex:0,TabStop:True) ・TextBox2 (TabIndex:1,TabStop:True) ・CommandButton1 (TabIndex:2,TabStop:True) ・Label1 (TabIndex:3,TabStop:False) 4つのコントロールを配置します。 【質問】 下記のコードで[CommandButton1]を押すと、Label1にTextBox1の内容を表示後、 正常にTextBox1へフォーカスセットされるのですが、 TextBox1にフォーカスがある時にエンター(vbKeyReturn)を押してLabel1に TextBox1の内容を表示させた場合、TextBox2にフォーカスがセットされてしまいます。 (TabStopがTrueの次のTabIndexのコントロールにフォーカス移動してしまいます。) これはエンターKeyを押すことによる当然の動きなのでしょうか? エンター(vbKeyReturn)を押し、処理後TextBox1へフォーカスセットする方法を ご教授お願い致します。 (尚、 ・[Tab]キー押下による全コントロールのフォーカス移動は必須(Label1除く) ・現在時刻をTextBox1に入れているのは、いちいち先生方に違う文言を入れる手間を 省いて頂く為で、実際には時刻を入れるプログラムではありません。) 記 Option Explicit '--------------------------------------------------------------- Private Sub UserForm_Activate() Me.TextBox1.Text = Now Me.TextBox1.SetFocus End Sub '--------------------------------------------------------------- Private Sub CommandButton1_Click() Me.Label1.Caption = Me.TextBox1.Text Me.TextBox1.Text = Now Me.TextBox1.SetFocus End Sub '--------------------------------------------------------------- Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _ ByVal Shift As Integer) If KeyCode = vbKeyReturn Then Call CommandButton1_Click End If End Sub '--------------------------------------------------------------- ★ちなみにVB6(SP5)では、少し勝手が違いますが上の様なことはないです〜 参考までに・・・・ Option Explicit '--------------------------------------------------------------- Private Sub Command1_Click() Me.Label1.Caption = Me.Text1.Text Me.Text1.Text = Now Me.Text1.SelStart = Len(Me.Text1.Text) Me.Text1.SetFocus End Sub '--------------------------------------------------------------- Private Sub Form_Load() Me.Text1.Text = Now End Sub '--------------------------------------------------------------- Private Sub Form_Resize() Me.Text1.SetFocus End Sub '--------------------------------------------------------------- Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then Call Command1_Click End If End Sub '--------------------------------------------------------------- 以上、どうぞ宜しくお願い致します。 |