Keep focus on textbox after pressing enter
在VBA表单中按Enter键后,如何将焦点保持在文本框中?
这段代码将文本添加到列表框,我想将重点放在文本框上,以准备接收其他项目。
当我单击添加按钮时,它将文本添加到列表框,并将焦点返回到文本框,但是当我按Enter键时,它并没有,即使它使用相同的代码也是如此。 有什么建议吗?
这是我的文本框代码:
1 2 3 4 5 6 7 | Private Sub TxtOtherAsset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then CmdAddOtherAsset_Click End If End Sub |
这是我的按钮的代码:
1 2 3 4 5 6 7 8 9 10 | Private Sub CmdAddOtherAsset_Click() If TxtOtherAsset.Text <>"" Then ListAddedAssets.AddItem TxtOtherAsset.Text TxtOtherAsset.Text ="" End If TxtOtherAsset.SetFocus End Sub |
我尝试了几种方法,但无法将焦点返回到文本框。 按Enter键后,焦点将移至TabIndex中的下一个。
从我的头开始:尝试将KeyCode设置为0。此外,使用KeyCodeConstants类(来自Core库)来确定Enter键的值。
像这样:
1 2 3 4 | If KeyCode = KeyCodeConstants.vbKeyReturn Then CmdAddOtherAsset_Click KeyCode = 0 End If |
删除您试图将焦点放在另一个子(
希望对你有效。 我没有测试。
您是否使用Enter键作为触发来捕获对文本框的更改? 如果是这种情况,请尝试使用更新后事件。 另外,请查看"退出时"事件。 当我看时,我注意到它有一个Cancel参数。 如果您仍想在Key Down事件中捕获Enter键,则可以在On Exit事件中阻止离开文本框。 当然,这可能意味着您永久地陷入困境,并且可能需要设置一种允许退出的方法。