This is probably overkill but:<br>
<br>
'**************************************************************<br>
' Public Function ElapsedTimeLong(dStart, dEnd)<br>
' Calculate the time elapsed from dStart to dEnd and return the<br>
' result as a string that looks like the following example:<br>
' "10 days, 20 hours, 30 minutes, 40 seconds". Zero values are<br>
' excluded. '***********************************************<br>
Public Function ElapsedTimeLong(dStart, dEnd) As String<br>
Dim dInterval As Double, sElapsed As String<br>
Dim sD As Variant, sH As String, sM As String, sS As String<br>
<br>
dInterval = dEnd - dStart ' Calculate the difference<br>
sD = Int(CSng(dInterval)) ' Days<br>
sH = Format(dInterval, "h"

' Hours<br>
sM = Format(dInterval, "n"

' Minutes<br>
sS = Format(dInterval, "s"

' Seconds ' Construct days<br>
sElapsed = IIf(sD = 0, "", IIf(sD = 1, sD & " Day", sD & " Days"

)<br>
sElapsed = sElapsed & IIf(sD = 0, "", IIf(sH & sM & sS = "000", ", ", " "

)<br>
' Construct hours<br>
sElapsed = sElapsed & IIf(sH = "0", "", IIf(sH = "1", sH & " Hour", sH & " Hours"

)<br>
sElapsed = sElapsed & IIf(sH = "0", "", IIf(sM & sS = "00", ", ", " "

)<br>
' Construct minutes<br>
sElapsed = sElapsed & _<br>
IIf(sM = "0", "", IIf(sM = "1", sM & " Minute", sM & " Minutes"

)<br>
sElapsed = sElapsed & IIf(sM = "0", "", IIf(sS = "0", ", ", " "

)<br>
' Construct seconds<br>
sElapsed = sElapsed & IIf(sS = "0", "", IIf(sS = "1", sS & " Second", sS & " Seconds"

)<br>
' Assign for return to caller<br>
ElapsedTimeLong = IIf(sElapsed = "", "0", sElapsed)<br>
<br>
End Function<br>
<br>
HTH<br>
RDH