You can write the value by calling a simple macro from the userform e.g.
SetCustProperty "Second", CheckBox1.Value
Sub SetCustProperty(strPropertyName As String, bValue As Boolean)
Dim oProp As DocumentProperty
Dim bProp As Boolean
For Each oProp In ActiveDocument.CustomDocumentProperties
If oProp.name = strPropertyName Then
oProp.Value = bValue
bProp = True
Exit For
End If
Next oProp
If Not bProp Then
With ActiveDocument.CustomDocumentProperties
.Add name:=strPropertyName, _
LinkToContent:=False, _
Type:=2, _
Value:=bValue
End With
End If
lbl_Exit:
Exit Sub
End Sub
Reading the value into the checkbox is essentially a reversal of the process
Checkbox1.Value = ReadCustProperty("Second")
Function ReadCustProperty(strPropertyName As String) As Boolean
Dim oProp As DocumentProperty
Dim bProp As Boolean
For Each oProp In ActiveDocument.CustomDocumentProperties
If oProp.name = strPropertyName Then
bProp = oProp.Value
Exit For
End If
Next oProp
ReadCustProperty = bProp
lbl_Exit:
Exit Function
End Function