Here's the code with those changes applied. I also added a line that will clear the cell contents if an invalid time entry is made.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 Dim TimeStr As String

 On Error GoTo EndMacro
 If Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
     Exit Sub
 End If
 If Target.Cells.Count > 1 Then
     Exit Sub
 End If
 If Target.Value = "" Then
     Exit Sub
 End If

 Application.EnableEvents = False
 With Target
 If .HasFormula = False Then
     Select Case Len(.Value)
         Case 1 ' e.g., 1 = 00:01 AM
             TimeStr = "00:0" & .Value
         Case 2 ' e.g., 12 = 00:12 AM
             TimeStr = "00:" & .Value
         Case 3 ' e.g., 735 = 7:35 AM
             TimeStr = Left(.Value, 1) & ":" & _
             Right(.Value, 2)
         Case 4 ' e.g., 1234 = 12:34
             TimeStr = Left(.Value, 2) & ":" & _
             Right(.Value, 2)
         Case Else
             Err.Raise 0
     End Select
     .Value = Format(TimeValue(TimeStr), "h:mm am/pm")
 End If
 End With
 Application.EnableEvents = True
 Exit Sub
EndMacro:
 Target.Value = ""
 MsgBox "You did not enter a valid time"
 Application.EnableEvents = True
 End Sub
Change the range address to suit.