Hola. para solucionar el problema tienes que agregar en el último código la excepción para que no aplique el formato si el dato ingresado es una fecha.
Te quedaría asi:
Private Sub worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or Target.HasFormula Or IsDate(Target.Value) Then Exit Sub
On Error Resume Next
Application.EnableEvents = False
Target.Value = VBA.UCase(Target.Value)
Application.EnableEvents = True
On Error GoTo 0
End Sub
La parte que agregamos es : Or IsDate(Target.Value)
Con este cambio deberías dejar de tener problemas con las fechas.