Excel VBA 文本框时间验证为 [h]:mm
Excel VBA Textbox time validation to [h]:mm
我正在开发 VBA Excel 用户表单,需要以 [h]:mm 格式输入时间。这意味着小时数可以是无限的,并且不会像 hh:mm 格式那样在 23:59 之后循环回到 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
但是,使用此代码时,如果我输入 25:53,它会将其转换为 01:53。如果能得到任何帮助,我将不胜感激。
您需要手动解析有效性,这是一种方法:
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
我正在开发 VBA Excel 用户表单,需要以 [h]:mm 格式输入时间。这意味着小时数可以是无限的,并且不会像 hh:mm 格式那样在 23:59 之后循环回到 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
但是,使用此代码时,如果我输入 25:53,它会将其转换为 01:53。如果能得到任何帮助,我将不胜感激。
您需要手动解析有效性,这是一种方法:
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