是否可以使用 VBA 以 [h]:mm 格式格式化时间?
excel 中的 [h]:mm 格式将 25 小时显示为 25:00,将 125 小时显示为 125:00
我尝试了几件事,例如:
format(datetime, "[h]:mm")
format(datetime, "H:mm")
format(datetime, "hh:mm")
这些都没有预期的效果。我还查看了 MS 帮助,但找不到任何有用的东西。
通过应用程序对象使用 TEXT 工作表函数,如下所示:
x = Application.Text(.294,"[h]:mm")
JFC 打败了我,但这就是我想出的……
Sub Test()
Debug.Print FormatHM(24 / 24) '24:00
Debug.Print FormatHM(25 / 24) '25:00
Debug.Print FormatHM(48 / 24) '48:00
Debug.Print FormatHM(48.6 / 24) '48:36
End Sub
Function FormatHM(v As Double) As String
FormatHM = Format(Application.Floor(v * 24, 1), "00") & _
":" & Format((v * 1440) Mod 60, "00")
End Function
不使用格式功能,但您可以使用Range(MyData).NumberFormat = "[h]:mm"
看起来 VBA 的Format
函数没有内置的方法来做到这一点。(翻白眼。)
这个自制的功能可以解决问题:
Function HoursAndMinutes(datetime As Date) As String
Dim hours As Integer
Dim minutes As Integer
hours = Int(datetime) * 24 + Hour(datetime) ' the unit of Date type is 1 day
minutes = Round((datetime * 24 - hours) * 60)
HoursAndMinutes = hours & ":" & Format(minutes, "00")
End Function
用法:
Dim datetime As Date
datetime = TimeSerial(125, 9, 0) ' 125 hours and 9 minutes
Debug.Print HoursAndMinutes(datetime) ' 125:09