How "sophisticated" are your users?
The reason I ask is: it's fairly simple to password protect the VBA code.
Once you've done so, you can create a
Private Sub Worksheet_Activate()
sub that basically selects another sheet...
The only problem with this approach, is that if the users are just a "little"
savvy,
they can simply create a VBA sub in their own personal.xls file
that does:
Application.EnableEvents = false
and the sheet is "unlocked".
Another way is to do as you said, and make a lot more call to the
protect/unprotect functions for the sheet.