excel用户表单中文本框的时间格式

时间:2017-02-21 18:16:48

标签: excel time-format

我有以下代码在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:毫米

1 个答案:

答案 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。