Looked again and, yes, you are/were right ... I missed the 0 hours part out.
I've changed the code now. Both functions work well but my version rounds the milliseconds as you suggested you would like originally. Not a lot in it 
See the attached workbook.
Option Explicit
Function fCnvTime(ByRef cell As Range)
' example VBA call: MsgBox fCnvTime(Range("A3"))
' example WS call: =fcnvtime(A3)
Dim vArray
Dim lMin As Long, lSec As Long, lMS As Long, i As Long
Dim sTime As String
On Error Resume Next
If Right(cell, 1) = Chr(160) Then cell = Left(cell, Len(cell) - 1)
vArray = Split(Trim(cell.Value))
lMin = 0: lSec = 0: lMS = 0
For i = LBound(vArray) To UBound(vArray)
If LCase(Right(vArray(i), 2)) = LCase("Mn") Then
lMin = lMin + --Left(vArray(i), Len(vArray(i)) - Len("Ms"))
GoTo lblNext
End If
If LCase(Right(vArray(i), 2)) = LCase("ms") Then
lMS = lMS + --Left(vArray(i), Len(vArray(i)) - Len("ms"))
lSec = lSec + Round(lMS / 1000, 0)
GoTo lblNext
End If
If LCase(Right(vArray(i), 1)) = LCase("s") Then
lSec = lSec + --Left(vArray(i), Len(vArray(i)) - Len("s"))
GoTo lblNext
End If
lblNext:
Next 'i
fCnvTime = TimeSerial(0, lMin, lSec)
On Error GoTo 0
End Function
Sub test()
MsgBox fCnvTime(Range("A10"))
End Sub
Regards, TMS
Bookmarks