如何在按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中的下一个。
答案 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事件以防止离开文本框。当然,这可能意味着你永远陷入困境,可能需要设置一种允许退出的方式。