Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range, A As Range, C As Range
On Error Resume Next
Set R = Intersect(Target, [A1:AZ2100]).SpecialCells(xlCellTypeConstants, 2)
If Err Then Exit Sub
On Error GoTo 0
Application.EnableEvents = False
For Each A In R.Areas: For Each C In A: C.Value = UCase$(C.Value): Next C, A
Application.EnableEvents = True
End Sub