Access dates are stored as floating point numbers. The whole part is the number of days since a starting point the Access developers chose (you can see that point by opening the debug window and typing Print CDate(0)).
The fractional part is the time within the day.
Since 1 day = 1, 1 hour = 1 / 24.
When you subtract 1 date from another, multiply the result by 24 to get the number of hours.
By again stripping off the 'whole' part, multipy the remainder by 60 and that's the number of minutes.
Here's some sample code:
Function FormatHHMM(ByVal InputValue As Double) As String
InputValue = InputValue * 24 ' convert to hours
Dim TheHours As Long
TheHours = Fix(InputValue + 1 / 120) ' 1/120 is 1/2 of a minute; and it removes a rounding error that
' can cause 60 minutes to be displayed instead of 1 hr
InputValue = InputValue - TheHours
Dim TheMinutes As Long
TheMinutes = InputValue * 60
Dim RetStr As String
If TheHours > 0 Then
RetStr = TheHours & " hr" & IIf(TheHours <> 1, "s", ""

End If
If TheMinutes > 0 Then
If Len(RetStr) > 0 Then RetStr = RetStr & " "
RetStr = RetStr & TheMinutes & " min" & IIf(TheMinutes <> 1, "s", ""

End If
FormatHHMM = RetStr
End Function