 <p>You can add 1 (= one day) to the time difference, then calculate it directly using <em>TimeValue</em> to remove the date part:</p> <pre><code>ShiftDuration = TimeValue(CDate(#06:00:00 am# - #10:00:00 pm# + 1)) ShiftDuration = TimeValue(CDate(#10:00:00 pm# - #02:00:00 pm# + 1)) ShiftDuration = TimeValue(CDate(#02:00:00 pm# - #06:00:00 am# + 1)) </code></pre> <p>All of these will return a date/time value (a timespan) of <code>08:00:00</code> which can format for display using <em>Format</em> as you like or convert to hours and/or minutes.</p> <p>If you need to display durations of more than 24 hours, use a function like this:</p> <pre><code>Public Function FormatHourMinute( _ ByVal datTime As Date, _ Optional ByVal strSeparator As String = ":") _ As String ' Returns count of days, hours and minutes of datTime ' converted to hours and minutes as a formatted string ' with an optional choice of time separator. ' ' Example: ' datTime: #10:03# + #20:01# ' returns: 30:04 ' ' 2005-02-05. Cactus Data ApS, CPH. Dim strHour As String Dim strMinute As String Dim strHourMinute As String strHour = CStr(Fix(datTime) * 24 + Hour(datTime)) ' Add leading zero to minute count when needed. strMinute = Right("0" &amp; CStr(Minute(datTime)), 2) strHourMinute = strHour &amp; strSeparator &amp; strMinute FormatHourMinute = strHourMinute End Function </code></pre>