如何使用VBA中的format()函数以[h]:mm excel格式格式化Time

时间:2012-06-21 17:42:13

标签: excel vba excel-vba

是否可以使用VBA格式化[h]:mm格式的时间?

[h]:excel中的mm格式显示25小时为25小时,125小时为125:00

我尝试了几件事,例如:

format(datetime, "[h]:mm")
format(datetime, "H:mm")
format(datetime, "hh:mm")

这些都没有达到预期的效果。我也看过MS的帮助,找不到任何有用的东西。

4 个答案:

答案 0 :(得分:16)

通过应用程序对象使用TEXT工作表函数,如下所示:

  x = Application.Text(.294,"[h]:mm")

答案 1 :(得分:4)

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

答案 2 :(得分:1)

没有格式化功能,但您可以使用Range(MyData).NumberFormat = "[h]:mm"

答案 3 :(得分:1)

看起来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