タイトル | : エンターKeyでFocus移動 |
記事No | : 14253 |
投稿日 | : 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 '---------------------------------------------------------------
以上、どうぞ宜しくお願い致します。
|