SetFocus 在文本框的用户窗体中没有效果

问题描述 投票:0回答:1

我有一个带有日期文本框的用户表单。退出时,我想测试输入的值是否为日期,如果不是,则会弹出一个消息框,通知该条目无效。这一切都很好。

但我也希望光标回到文本框中,这样人们就被迫做出正确的输入。我用

.SetFocus
.SelStart = 1
尝试过。两者都没有效果。退出后,弹出MsgBox,但光标不在框中。也没有错误消息。我错过了什么?

Private Sub tbRGDatum_Exit(ByVal Cancel As MSForms.ReturnBoolean)

With tbRGDatum
    If IsDate(.Value) Then
        .Text = Format(.Text, "dd.mm.yyyy")
    Else
        MsgBox "Bitte gültiges Datum im Format DD.MM.YYYY eingeben"
        .SetFocus
    End If
End With

End Sub

无奈之下我也尝试将

tbRGDatum.SetFocus
放在
End With
下面而不是里面,只是为了测试一下,但仍然没有任何反应。

怀疑MsgBox是罪魁祸首,我尝试了没有它的代码,但无济于事。 我还尝试使用

_AfterUpdate
作为事件处理程序,得到了相同的结果。

期待您的建议!

excel vba textbox userform setfocus
1个回答
0
投票

请。尝试将“取消”设置为“真”,以防数据输入错误。这会取消退出事件。

With tbRGDatum
    If IsDate(.Value) Then
        .Text = Format(.Text, "dd.mm.yyyy")
    Else
        MsgBox "Bitte gültiges Datum im Format DD.MM.YYYY eingeben"
        Cancel = True
    End If
End With

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.