首页 > 解决方案 > 输入事件后将光标移动到另一个文本框 - VBA

问题描述

请你帮助我好吗?

使用下面的代码,我可以“设置焦点”并更改“Me.txtFT”的“背景色”。

但是,当我试图在“txtPT”上的“Enter”事件之后将光标移动到“Me.txtFT”时,光标没有移动,它一直在“txtPT”上。

我正在使用下面的代码。

Private Sub txtPT_Enter()
    If Trim(Me.txtPT.Value & vbNullString) = 0 Then
        MsgBox """FT field"" must contain a value before continue. Please try again": _
        Me.txtFT.SetFocus: _
        Me.txtFT.BackColor = &H80FFFF: _
        Exit Sub
    End If
End Sub

请你帮助我好吗?

标签: vba

解决方案


条件是测试长度,txtPT但消息是警告txtFT,因此从代码中不清楚意图可能是什么。

与其处理控件 B 的入口来验证控件 A 的值,不如考虑处理控件 A 的出口- 并首先取消它并以无效值失去焦点:

Private Sub txtFT_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With txtFT
        If Len(Trim(.Text & vbNullString)) = 0 Then
            Cancel.Value = True
            .BackColor = &H80FFFF
            MsgBox "[FT] cannot be empty!"
        End If
    End With
End Sub

推荐阅读