Excel VBA文本框时间验证为[h]:mm

Gur*_*Tiv 4 excel vba userform

我正在开发VBA Excel Userform并需要以[h]:mm格式输入时间.这意味着小时数可以是无限制的,并且在23:59之后不会像hh:mm格式那样循环回到0.我在网上搜索无济于事.

这是我目前使用的代码:

Private Sub Txtbx_TimeAvailable_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Me.Txtbx_TimeAvailable.Value <> Format(Me.Txtbx_TimeAvailable.Value, "[h]:mm") Then
        MsgBox "Please enter correct time format in hh:mm"
        Cancel = True
        Me.Txtbx_TimeAvailable.Value = vbNullString
    Else
        ThisWorkbook.Sheets(SELECTEDWORKSHEET).Range("C60").Value = Txtbx_TimeAvailable.Text
        Call UpdateDentistMainForm
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,如果我输入25:53使用此代码,则将其转换为01:53.我很感激我能得到的任何帮助.

Ale*_* K. 5

您需要手动解析有效性,这是一种方法:

Var = "59:59"

Dim IsValid As Boolean
Dim tok() As String: tok = Split(Var, ":")

If (UBound(tok) = 1) Then
    '// `like` to prevent lead +/-
    IsValid = tok(0) Like "#*" And IsNumeric(tok(0)) And tok(1) Like "#*" And IsNumeric(tok(1)) And tok(1) < 60
    '// optionally normalize by removing any lead 0
    Var = Val(tok(0)) & ":" & Val(tok(1))
End If

Debug.Print Var, IsValid
Run Code Online (Sandbox Code Playgroud)