Yep, ActiveX checkboxes can have 3 values (True, False and Null).
To allow a user to select all three values, the checkbox's TripleState property needs to be set to True. Even with the TripleState property set to False, the Null value can be assigned programmatically (as you will have seen when you tried Me.hcc.Value = "").
If you want to clear all the checkboxes then you need to loop through the userform's controls, check if each control is a checkbox and then set it's value to False.
Here are 2 examples, one using TypeOf and one using VBA.Typename()
Code:
Private Sub CommandButton1_Click()
Dim ctrl As MSForms.Control
For Each ctrl In Controls
'is the control a checkbox?
If TypeOf ctrl Is MSForms.CheckBox Then
If Not TypeOf ctrl Is MSForms.OptionButton Then
If Not TypeOf ctrl Is MSForms.ToggleButton Then
'if it is a checkbox then untick it
ctrl.Value = False
End If
End If
End If
Next ctrl
End Sub
Code:
Private Sub CommandButton1_Click()
Const CBX As String = "CheckBox"
Dim ctrl As MSForms.Control
For Each ctrl In Controls
'is the control a checkbox then untick it
If VBA.TypeName(ctrl) = CBX Then ctrl.Value = False
Next ctrl
End Sub