The original question was very basic, and asked how to bypass the error
message. The answer given accomplishes that goal. It is up to the
programmer to write code in a way that achieves the final outcome.
Your question brings up assumptions not presented in Scott's original
post (see below). What you want to accomplish requires thinking outside
the box. You can use the WorksheetSelectionChange for your issue. All
you need do is identify the cells allowed to be changed within your
module. If the users selection does not meet this criteria, then a
message box can be presented to the user instructing other wise. You can
even take this one step further by highlighting all the allowable cells
for the user. If the selected range meets the program requirements, then
simply unprotect the worksheet as explained, and lock the spreadsheet
upon completion.
Locking the spreadsheet can be done at any time, such as when the
workbook is closed. You can do this because your 'Change' event is
making sure that only the required cells are being touched. I.E. if a
range that is not to be touched is selected, you can always make sure to
set an activecell yourself within the code, thus forcing the users
selection to another range.