Excel VBA中TextBox回车添加内容后无法SetFocus问题求助
Excel VBA中TextBox按回车后SetFocus失效的解决办法
问题根源是回车键的默认行为会覆盖SetFocus操作:按下回车键时,系统会自动将焦点转移到Tab键顺序中的下一个控件,导致你手动设置的焦点被冲掉。只需修改代码取消回车键的默认行为即可解决:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode <> 13 Then Exit Sub ' 取消回车键的默认焦点转移行为 KeyCode = 0 Me.ListBox1.AddItem Me.TextBox1.Text Me.TextBox1.Text = "" Me.TextBox1.SetFocus End Sub
补充说明
如果仍有焦点异常问题,可在SetFocus前加入DoEvents,让系统先处理完当前事件队列再执行焦点设置:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode <> 13 Then Exit Sub KeyCode = 0 Me.ListBox1.AddItem Me.TextBox1.Text Me.TextBox1.Text = "" DoEvents Me.TextBox1.SetFocus End Sub
内容的提问来源于stack exchange,提问作者Pasquale Prudente
相关产品推荐
相关产品推荐

