6

在 VBA 表单中按 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

我尝试了几种方法,但无法将焦点返回到文本框。按下回车后,焦点转到 TabIndex 中的下一个。

4

2 回答 2

7

在我的脑海中:尝试将 KeyCode 设置为 0。此外,使用 KeyCodeConstants 类(来自 Core 库)来确定 Enter 键的值。

像这样:

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

删除您尝试将焦点设置在另一个子 ( TxtOtherAsset.SetFocus) 上的行。

希望对你有效。我没有测试它。

于 2011-07-13T22:37:03.827 回答
1

您是否使用 Enter 键作为触发器来捕获对文本框的更改?如果是这种情况,请尝试更新后事件。另外,请查看 On Exit 事件。当我查看时,我注意到它有一个 Cancel 参数。如果您仍想在 Key Down 事件中捕获 Enter 键,则可以使用 On Exit 事件来防止离开文本框。当然,这可能意味着你被永久卡住了,可能需要设置一种允许退出的方式。

于 2011-07-13T22:44:56.930 回答