This should get rid of any 0 times:

[vba]
Option Explicit

Sub ElapsedTime3()

Dim x As Long
Dim LastRow As Long
Dim StartTime As Double
Dim EndTime As Double
Dim Days As Long
Dim Hours As Long
Dim Minutes As Long
Dim ElapsedTime As String

LastRow = Range("A65536").End(xlUp).Row
For x = 2 To LastRow
Select Case Range("C" & x).Text
Case Is = "ENTERED"
StartTime = Range("D" & x).Value
Case Is = "BILLED"
EndTime = Range("D" & x).Value
Range("E" & x).Value = EndTime - StartTime
Case Else
Range("E" & x).Value = Range("D" & x).Value - Range("D" & x - 1).Value
End Select
Select Case Range("E" & x).Value
Case Is = vbNullString
Case Is >= 1
Days = Int(Range("E" & x).Value)
Hours = Int((Range("E" & x) - Days) * 24)
Minutes = ((Range("E" & x).Value - Days) * 24 - Hours) * 60
If Days = 1 Then
ElapsedTime = Days & " Day, "
Else
ElapsedTime = Days & " Days, "
End If
If Hours = 1 Then
ElapsedTime = ElapsedTime & Hours & " Hour, "
ElseIf Hours = 0 Then
Else
ElapsedTime = ElapsedTime & Hours & " Hours, "
End If
If Minutes = 1 Then
ElapsedTime = ElapsedTime & Minutes & " Minute"
ElseIf Minutes = 0 Then
Else
ElapsedTime = ElapsedTime & Minutes & " Minutes"
End If
Range("E" & x) = ElapsedTime
Case Is < 1
Hours = Int((Range("E" & x)) * 24)
Minutes = ((Range("E" & x).Value * 24) - Hours) * 60
If Hours = 1 Then
ElapsedTime = Hours & " Hour, "
ElseIf Hours = 0 Then
Else
ElapsedTime = Hours & " Hours, "
End If
If Minutes = 1 Then
ElapsedTime = ElapsedTime & Minutes & " Minute"
ElseIf Minutes = 0 Then
Else
ElapsedTime = ElapsedTime & Minutes & " Minutes"
End If
Range("E" & x) = ElapsedTime
End Select
ElapsedTime = ""
Next x

End Sub
[/vba]