我有一个带有日期文本框的用户表单。退出时,我想测试输入的值是否为日期,如果不是,则会弹出一个消息框,通知该条目无效。这一切都很好。
但我也希望光标回到文本框中,这样人们就被迫做出正确的输入。我用
.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
作为事件处理程序,得到了相同的结果。
期待您的建议!
请。尝试将“取消”设置为“真”,以防数据输入错误。这会取消退出事件。
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