2014-12-11 1 views
2

Мне нужно преобразовать общее количество минут в формат DD: HH: MM в VBA для доступа 2010. HH: MM прост , и я был в состоянии решить общее время в течение 24 часов, как это:VBA - Access 2010 - Невозможно отобразить общее количество минут в формате DD: HH: MM, если более 2 дней

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 часов не работали:

Первый Try:

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 

Предложения? Есть ли более элегантный подход, который я могу попробовать?

ответ

1

Используйте DateAdd, чтобы добавить свои общие минуты в день 0, что даст вам значение Дата/Время. Затем вы можете использовать дату & и другие стандартные функции 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 
+0

Thanks HansUp! Это решение отлично работало. – compass

Смежные вопросы