6

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

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

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

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

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

2 に答える 2

7

頭のてっぺんから: KeyCode を 0 に設定してみてください。また、KeyCodeConstants クラス (コア ライブラリから) を使用して、Enter キーの値を判断します。

このような:

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

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

それがうまくいくことを願っています。私はそれをテストしませんでした。

于 2011-07-13T22:37:03.827 に答える
1

テキスト ボックスへの変更をキャッチするトリガーとして Enter キーを使用していますか? その場合は、代わりに After Update イベントを試してください。また、On Exit イベントも見てください。調べてみると、Cancel パラメーターがあることに気付きました。Key Down イベントで Enter キーをキャッチしたい場合は、On Exit イベントを使用して、テキスト ボックスから離れないようにすることができます。もちろん、それはおそらくあなたが永久に立ち往生していることを意味し、終了できるようにする方法を設定する必要があるかもしれません.

于 2011-07-13T22:44:56.930 に答える