2011-07-13 14 views
5

VBAフォームでEnterキーを押した後、テキストボックスにフォーカスを保持するにはどうすればよいですか?Enterキーを押した後、テキストボックスにフォーカスを置く

このコードはテキストをリストボックスに追加し、テキストボックスにフォーカスを置いて別のアイテムを受け取る準備をします。

[追加]ボタンをクリックすると、テキストがリストボックスに追加され、フォーカスをテキストボックスに戻します。入力を押すとhowerverに戻ります。同じコードを使用しても難しいです。なにか提案を?

これは、テキストボックスのために私のコードです:

Private Sub TxtOtherAsset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 

    If KeyCode = 13 Then 
     CmdAddOtherAsset_Click 
    End If 

End Sub 

、これが私のボタンのコードです:

Private Sub CmdAddOtherAsset_Click() 

    If TxtOtherAsset.Text <> "" Then 
     ListAddedAssets.AddItem TxtOtherAsset.Text 
     TxtOtherAsset.Text = "" 
    End If 

    TxtOtherAsset.SetFocus 

End Sub 

私はいくつかの方法を試してみたが、私は返すことができないんだけどテキストボックスにフォーカスを移動します。 Enterキーを押すと、フォーカスはTabIndexの次のページに移動します。

答えて

4

私の頭の上から:KeyCodeを0に設定してみてください。また、KeyCodeConstantsクラス(Coreライブラリから)を使ってEnterキーの値を決定してください。このよう

If KeyCode = KeyCodeConstants.vbKeyReturn Then 
    CmdAddOtherAsset_Click 
    KeyCode = 0 
End If 

あなたが他のサブ(TxtOtherAsset.SetFocus)にフォーカスを設定しようとしている行を削除します。

ご希望の場合はご利用ください。私はそれをテストしなかった。

+0

これは魅力的だった。この変更を行うことは非常に簡単でした。私はこの方がはるかに簡単に見えたので、他の答えをテストしなかった。そしてそれは働いた。ありがとう! – rubenploneda

+0

**「KeyCode = 0」 - この行は素晴らしいです!** 1-2時間私は、KeyDownで希望を失ったので、私はグーグルで解決策を試してみました(必死のもの、.NETまたはVB6関連)。 ...私はこの黄金のポストを見つけるまで働いたことはありません! – ZygD

1

Enterキーをトリガーとして使用して、テキストボックスの変更をキャッチしていますか?その場合は、After Updateイベントを実行してください。また、On Exitイベントを見てください。私が見たとき、私はそれがキャンセルパラメータを持っていることに気付きました。 Key DownイベントでEnterキーを捕捉したい場合は、On Exitイベントを使用してテキストボックスから離れるのを防ぐことができます。もちろん、これはおそらくあなたが恒久的に立ち往生していることを意味し、終了を許可する方法を設定する必要があるかもしれません。

関連する問題