Based on your example, here's a possible workaround. Place this in your worksheet module:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Activate
Select Case ActiveCell.Value
Case ""
Exit Sub
Case "X"
ActiveCell.Offset(1, 0).Activate
Do Until ActiveCell.Locked = False
If ActiveCell.Locked = True Then
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Select
End If
Loop
Case Else
MsgBox "Value not permitted.", 16, "Only one character ''X'' allowed."
ActiveCell.Value = ""
Exit Sub
End Select
End Sub
This can be modified for range, and length of value too, but if you only want one character and it's an X, this might do the job.
Be careful of one thing, that is to provide for an unlocked cell in your range (or elsewhare on the sheet if no specific range is coded). If there isn't such a cell, you may need to add an error trap to the code. If you always arrange for another unlocked cell somewhere, then this code may suffice as is.
Any help?