try this...put this function into a module.
the parameter....(time difference)... must be given in seconds...
usage: ElapsedTimeAsTextRecur (datediff("s",[bcg],date()))
Code:
'USAGE: ElapsedTimeAsTextRecur(655)
Public Function ElapsedTimeAsTextRecur(ByVal pvSecs, Optional ByVal pvSecBlock)
'recursive time lapse given seconds
Dim vTxt
Dim iNum As Long
Const kDAY = 86400
Const kSECpYR = 31536000
'60 sec = 1 min 60 sec
'60 min = 1 hr 3600 sec
'24 hr = 1 day 86400 sec
'7 days = 1 week 604800 sec
'30 days = 1 month 2592000
'12 months = 1 year = 31536000
'YEARS
If IsMissing(pvSecBlock) Then pvSecBlock = kSECpYR
iNum = pvSecs \ pvSecBlock
Select Case pvSecBlock
Case kSECpYR 'yr
sUnit = "years"
If iNum > 0 Then
vTxt = iNum & " years "
pvSecs = pvSecs - (iNum * pvSecBlock)
End If
vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 2592000)
Case 2592000 'MO
sUnit = "months"
If iNum > 0 Then
If iNum > 11 Then iNum = 11
vTxt = vTxt & iNum & " months "
pvSecs = pvSecs - (iNum * pvSecBlock)
End If
vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 604800)
Case 604800 'WEEK
sUnit = "weeks"
If iNum > 0 Then
If iNum > 3 Then iNum = 3
vTxt = vTxt & iNum & " weeks "
pvSecs = pvSecs - (iNum * kDAY * 7)
End If
vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 86400)
Case kDAY 'day
sUnit = "days"
If iNum > 0 Then
vTxt = vTxt & iNum & " days "
pvSecs = pvSecs - (iNum * kDAY)
End If
vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 3600)
Case 3600 'hrs
sUnit = "hrs"
If iNum > 23 Then iNum = 23
If iNum > 0 Then
vTxt = vTxt & iNum & " hrs "
pvSecs = pvSecs - (iNum * pvSecBlock)
End If
vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 60)
Case 60 'min
sUnit = "mins"
If iNum > 0 Then
vTxt = vTxt & iNum & " mins "
pvSecs = pvSecs - (iNum * pvSecBlock)
End If
vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 1)
Case Else
sUnit = "secs"
If pvSecs > 0 Then vTxt = vTxt & pvSecs & " seconds"
End Select
ElapsedTimeAsTextRecur = vTxt
End Function