0

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

1 回答 1

2

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

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

    Cancel = True
    ZB.Value = vbNullString
    ZB.SetFocus

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

于 2013-05-04T13:50:21.043 回答