Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, cell As Range
Set rng = Application.Intersect(Target, Range("B:C")) 'Range("B:C") is where you want to enforce upper case
'check if any B:C cells changed:
If Not rng Is Nothing Then
'turn off events (so dont get repeatedly fired as your code changes the cells)
Application.EnableEvents = False
On Error GoTo exit_here
For Each cell In rng 'iterate thru the changed cells
If cell.Value2 <> "" Then 'check it isn't blank
If Not IsNumeric(cell.Value2) Then 'check it isn't a number
cell.Value2 = UCase(cell.Value2) 'change to upper case
End If
End If
Next cell
End If
exit_here:
Application.EnableEvents = True 'turn events back on
End Sub