按Enter键后继续关注文本框

时间:2011-07-13 21:04:56

标签: vba textbox keydown enter

如何在按VBA表格输入后将焦点保持在文本框中?

此代码将文本添加到列表框中,我希望将焦点放在文本框上以准备接收另一个项目。

当我点击添加按钮时,它会将文本添加到列表框并将焦点返回到文本框,当我按下输入时它不会,甚至很难使用相同的代码。有什么建议吗?

这是我的文本框代码:

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中的下一个。

2 个答案:

答案 0 :(得分:6)

从头到尾:尝试将KeyCode设置为0.另外,使用KeyCodeConstants类(来自Core库)来确定Enter键的值。

像这样:

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

删除您尝试将焦点设置在其他子对象上的行(TxtOtherAsset.SetFocus)。

希望它适合你。我没有测试它。

答案 1 :(得分:1)

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