将用户带回特定的文本框

时间:2013-05-04 13:11:20

标签: vba excel-vba excel

我有一个小例程来检查时间输入...即如果用户输入“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

1 个答案:

答案 0 :(得分:2)

Santosh的建议非常适合限制TextBox中允许的字符。仅这一点就可以解决这个问题。但是对于其他可能无法在此示例中尽可能使用字符限制的人来说,这是一个答案。

要将焦点返回到文本框ZB,请执行以下操作:

    Cancel = True
    ZB.Value = vbNullString
    ZB.SetFocus

Cancel = True是您缺少的部分。这基本上取消了Exit事件,然后我强制TextBox值为空,然后.SetFocus