我有一个小例程来检查时间输入...即如果用户输入“8”,它会将此更改为08:00等等...效果很好。
现在我认为我会聪明并确保用户输入最多4个数字,如果没有,则会弹出一个msgbox。到目前为止还很容易,但我怎么把他带回文本框,以便他能纠正他的进入?我试过.Setfocus但没有任何反应?任何想法?
Private Sub ZB_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(ZB) = 2 Then
ZB = ZB & ":00"
ElseIf Len(ZB) = 1 Then
ZB = "0" & ZB & ":00"
ElseIf Len(ZB) = 4 Then
ZB = Left(ZB, 2) & ":" & Right(ZB, 2)
ElseIf Len(ZB) = 3 Then
ZB = Left(ZB, 1) & ":" & Right(ZB, 2)
ElseIf Len(ZB) > 4 Then
MsgBox "What you trying to say ???"
ZB.SetFocus
Else
End If
End Sub
答案 0 :(得分:2)
Santosh的建议非常适合限制TextBox中允许的字符。仅这一点就可以解决这个问题。但是对于其他可能无法在此示例中尽可能使用字符限制的人来说,这是一个答案。
要将焦点返回到文本框ZB
,请执行以下操作:
Cancel = True
ZB.Value = vbNullString
ZB.SetFocus
Cancel = True
是您缺少的部分。这基本上取消了Exit
事件,然后我强制TextBox值为空,然后.SetFocus
。