That code is not robust as it will not handle multiple cells. To test, try any of these in the target range.
1. Select 2 or more cells and press the Delete key.
2. Select 2 or more cells, type any letter and confirm with Ctrl+Enter.
3. Select 2 or more cells (say from outside the target area) and copy then paste in the target range.
If you do test any of the above, make sure you haven't disabled events. To be sure ..
In the VBA window, ensure the Immediate Window is visible (View|Immediate Window) and then on a new line in the Immediate Window, type
Application.EnableEvents=True and press Enter
This would be better code to do what you want.:
<font face=Courier New><br><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> Worksheet_Change(<SPAN style="color:#00007F">ByVal</SPAN> Target <SPAN style="color:#00007F">As</SPAN> Range)<br> <SPAN style="color:#00007F">Dim</SPAN> Changed <SPAN style="color:#00007F">As</SPAN> Range, c <SPAN style="color:#00007F">As</SPAN> Range<br> <br> <SPAN style="color:#00007F">Set</SPAN> Changed = Intersect(Target, Range("E18:V383"))<br> <SPAN style="color:#00007F">If</SPAN> Changed <SPAN style="color:#00007F">Is</SPAN> <SPAN style="color:#00007F">Nothing</SPAN> <SPAN style="color:#00007F">Then</SPAN> <SPAN style="color:#00007F">Exit</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br> <br> Application.ScreenUpdating = <SPAN style="color:#00007F">False</SPAN><br> Application.EnableEvents = <SPAN style="color:#00007F">False</SPAN><br> <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> c <SPAN style="color:#00007F">In</SPAN> Changed<br> c.Value = UCase(c.Value)<br> <SPAN style="color:#00007F">Next</SPAN> c<br> Application.EnableEvents = <SPAN style="color:#00007F">True</SPAN><br> Application.ScreenUpdating = <SPAN style="color:#00007F">False</SPAN><br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br></FONT>