And, you can always use the Tag property as a Pseudo Locked property:
Check1.Tag = "LOCKED"
Private Sub Check1_Validate(Cancel As Boolean)
If Check1.Tag = "LOCKED" Then
Cancel = True
End If
End Sub
You can extend this method by adding additional property proceedures:
Private Property Let CheckBoxLocked(ctrl As Control, Value As Boolean)
If TypeOf ctrl Is CheckBox Then
If Value Then
ctrl.Tag = "LOCKED"
Else
ctrl.Tag = vbNullString
End If
End If
End Property
Private Property Get CheckBoxLocked(ctrl As Control) As Boolean
If TypeOf ctrl Is CheckBox Then
If ctrl.Tag = "LOCKED" Then
CheckBoxLocked = True
Else
CheckBoxLocked = True
End If
End If
End Property
And set it like this:
CheckBoxLocked(Check1)=True
Or Check it's value like this:
Debug.Print CheckBoxLocked(Check1)
To go one step even further you could also drop the last two property proceedures into a MODULE, changing them to PUBLIC, and then use this through-out the propram for any check box.....
Want to add other properties using the TAG property? Then do so using a comma delimiter to seperate the items in the Tag property: Tag = LOCKED, BOLD, BACKGREY
And the using InStr/Replace functions, or better yet, the Split/Filter/Join functions you can find if a value exists, remove a value, or add a value.
Of course you could just simply create a user control and add the missing property/method....