我有以下代码在userform中设置文本框“txtA”的时间格式。
Private Sub txtA_Afterupdate()
Dim tString As String
With txtA
'Check if user put in a colon or not
If InStr(1, .Value, ":", vbTextCompare) = 0 And Len(.Value) > 1 Then
'If not, make string 4 digits and insert colon
tString = Format(.Value, "0000")
tString = Left(tString, 2) & ":" & Right(tString, 2)
txtA.Value = Format(TimeValue(tString), "hh:mm")
Else
'Otherwise, take value as given
.Value = Format(.Value, "hh:mm")
End If
End With
假设我说20个文本框,(A - E)使一个组(F-H)组成另一个组,依此类推。现在我有2个Q. 1 - 我应该将上面的代码单独应用到每个文本框中,还是有一个代码可以将所有文本框中的userform名称放在其中? 2-输入数据高于23:59它给出错误我将格式更改为[h]:mm但是没有工作,我想如果用户输入35:45时间显示,因为它不像d:hh:毫米
答案 0 :(得分:1)
问题1的答案是你需要将代码应用到每个文本框中,但首先你应该使用你拥有的代码并使它成为一个函数,你可以从每个txt $ _Afterupdate()子函数调用它。
该函数需要知道要格式化的文本框,以便它必须接收文本框对象
function formatTime(objTXT As Object)
然后在代码中将txtA替换为objTXT
objTXT.Value = Format(TimeValue(tString), "hh:mm")
然后你将从每个文本框调用formatTime Afterupdate并传递文本框对象。
Private Sub txtA_Afterupdate()
formatTime me.txtA
end sub
我需要考虑你的第二个问题,但如果你想接受超过24小时,我很确定你不能使用格式hh:mm。