Selected Answer
You could use something like this:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target.Value = "" Then
MsgBox "Error: You can't change that value!"
End If
End Sub
Change $A$1 to the cell for the surname.
This takes care of a use deleting the option. It is goes into the worksheet module code section for the Sheet that has the drop downs.
To throw an error if the surname is changed when there are values in for the name and nickname, use something like this:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And (Target.Value = "" Or _
(Target.Offset(, 1).Value <> "" And Target.Offset(, 2).Value <> "")) Then
MsgBox "Error: You can't change that value!"
End If
End Sub
This also works for the first scenario mentioned above.
This assumes the name cell is one ot the right of the surname cell and that that nickname is one to the right of the name cell. If that's not the case, change Offset(, 1) and Offset(, 2) accordingly.