Общий ответ таков:
Format(CDate(d2-d1),"h:m")
В частности, для вашего времени начала и окончания это выражение будет давать результат "8:39".
Если вам нужно извлечь часы и минуты из этого, вы можете сделать это:
Dim sDuration as String
Dim iCol as Long
Dim sH as String
Dim sM as String
Dim iH as Long
Dim iM as Long
sDuration = Format(CDate(d2-d1),"h:m") ' the "8:39" in your case
iCol =InStr(sDuration, ":")
sH = Left(sDuration, iCol - 1)
sM = Mid(sDuration, iCol + 1, 2) ' length of 2 or any longer
iH = CInt(sH)
iM = CInt(sM)
Вы всегда можете работать с «числами», преобразовывая десятичные дроби, умножая на 24 и на 60, округляя ... как в
iH = Int(CDate(d2-d1)*24) ' to get the hours
и т.д.. (немного сложнее с протоколом)