我需要在VBA for Access 2010中将总分钟转换为DD:HH:MM格式.HH:MM很简单,我可以像这样在24小时内解决总时间:
If total / 1440 > 1 Then
tbTimeTotal.Value = "1:" & Format(total / 60 / 24, "hh:nn")
Else
tbTimeTotal.Value = Format(total / 60 / 24, "hh:nn")
End If
但我尝试过的超过48小时的解决方案无效:
首先尝试:
If total / 2880 > 2 Then
tbTimeTotal.Value = "2:" & Format(total / 60 / 24, "hh:nn")
ElseIf total / 1440 > 1 And total / 2880 < 2 Then
tbTimeTotal.Value = "1:" & Format(total / 60 / 24, "hh:nn")
Else
tbTimeTotal.Value = Format(total / 60 / 24, "hh:nn")
End If
第二次尝试:
If total > 2880 Then
tbTimeTotal.Value = "2:" & Format(total / 60 / 24, "hh:nn")
ElseIf total > 1440 And total < 2880 Then
tbTimeTotal.Value = "1:" & Format(total / 60 / 24, "hh:nn")
Else
tbTimeTotal.Value = Format(total / 60 / 24, "hh:nn")
End If
连连呢?我可以尝试一种更优雅的方法吗?
答案 0 :(得分:1)
使用DateAdd
将您的总分钟数添加到第0天,这将为您提供日期/时间值。然后你可以使用日期&amp;使用该值创建自定义时间格式的时间和其他标准VBA函数。
以下是基于以下功能的一些示例:
? CustomTimeFormat(720)
12:00
? CustomTimeFormat(790)
13:10
? CustomTimeFormat(1510)
1:01:10
? CustomTimeFormat(2955)
2:01:15
请注意,您无需从您的问题中编写所有这些数学运算,因为VBA函数会自动处理这些细节。
Public Function CustomTimeFormat(ByVal pMinutes As Long) As String
Dim lngDays As Long
Dim strTime As String
Dim strOutput As String
Dim dteEquivalent As Date
dteEquivalent = DateAdd("n", pMinutes, 0)
lngDays = CLng(DateValue(dteEquivalent))
strTime = Format(dteEquivalent, "hh:nn")
strOutput = vbNullString
If lngDays > 0 Then
strOutput = lngDays & ":"
End If
strOutput = strOutput & strTime
CustomTimeFormat = strOutput
End Function