tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル エンター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
'---------------------------------------------------------------

以上、どうぞ宜しくお願い致します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。