【发布时间】:2019-04-24 12:56:57
【问题描述】:
我在多个用于时间分配的用户窗体上有多个文本框。为简单起见,说 userform1 和 userform2,每个都有 textbox1 和 textbox2。 Userform1 用于用户输入,它将值放入表中,而 userform2 从该表中提取值并显示在相关的文本框中。我需要将这些框的输入和显示都限制为 [H]:mm 格式,其中分钟不能超过 59,但小时可以是 25+,即 125:59 但不是 4:67
我尝试了这两个线程以及其他线程的代码组合,但似乎无法使其正常工作。
Excel VBA Textbox time validation to [h]:mm
Time format of text box in excel user form
最终我只是尝试使用消息框来操纵用户输入,但这仍然会使条目出错
Sub FormatHHMM(textbox As Object)
Dim timeStr As String
With textbox
'Check if user put in a colon or not
If InStr(1, .Value, ":", vbTextCompare) = 0 And Len(.Value) > 1 Then
MsgBox "Please use HH:mm Format"
textbox.Value = ""
textbox.SetFocus
Else
If Right(.Value, 2) > 60 Then
MsgBox "Minutes cannot be more than 59"
textbox.Value = ""
textbox.SetFocus
End If
End If
End With
End Sub
这允许用户输入字母字符,即使从表中调用时正确输入也会显示为一个值,即 5.234... 而不是 125:59
【问题讨论】:
-
您是否希望根据这些输入在表中存储字符串或小数?
-
您可以检查数字输入
-
@MichaelMurphy 我会说字符串。表格上的信息稍后将被打印到需要小时和分钟的 word 文档中。
-
@JvdV 我试过
if not Isnumeric但它在冒号上触发并告诉我这不是数字。 -
@RappaportXXX,你可以先检查冒号,然后检查左右两边的数值吗?