If Target is a single cell, then Target.Value will return the value in that cell. When Target is a Range of cells, Target.Value doesn't really mean anything anymore, and will normally give you a Run-time error '13' Type Mismatch. The only reason it doesn't here is because of your On Error statement, which simply bypasses the offending line without telling you anything about it. The code in the error handler should only run if there is an error, so there should always be an Exit Sub above it.
To do what you want, you need to do a For/Next loop to go through all the cells in the range, as shown below (note: I took out the UnProtect and Protect, as if I Protected my Worksheet at the end, I couldn't change it anymore to test - I'll assume your worksheet is set up to make that not a problem for you.)
Bookmarks