The only solution is to use the selection change event and check to see if
the current cell is locked. If not locked then unprotect the sheet. Something
like this.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Protect
If Target.Count > 1 Then Exit Sub
If Target.Locked = False Then Me.Unprotect
End Sub
Note that the spell check can/will operate on the entire sheet so if there
are spelling issues elsewhere in the sheet the user will be able to change
the text of those cells.
Sub Spell_Check()
ActiveSheet.Unprotect Password:="justme"
Cells.CheckSpelling SpellLang:=1033
ActiveSheet.Protect Password:="justme", DrawingObjects:=True, _
Contents:=True, Scenarios:=True
End Sub
Unprotects the sheet, does the spellcheck then reprotects the sheet.