This should get you close. If all your CCs "tagged" "Addition" "Deviation" etc. are checkboxes then there is no need to check if they are checkboxes
Sub CheckBoxesByTag()
Dim lngTag As Long
Dim arrTags() As String
Dim lngProp As Long
Dim arrProperties() As String
Dim varValue As Variant
Dim oCCs As ContentControls
Dim oCC As ContentControl
'Define the names of the custom properties to check
arrProperties = Split("DCR Type|Classification", "|")
'Loop through each property name in the array
For lngProp = 0 To UBound(arrProperties)
'Get the value of the custom property
varValue = ActiveDocument.CustomDocumentProperties(arrProperties(lngProp)).Value
'Define the tagd to find
arrTags = Split("Addition|Deviation|Change|Removal|Class A|Class B|Class C|Class D", "|")
For lngTag = 0 To UBound(arrTags)
'Make sure to enclose string values in double quotes
'Check if the custom property exists and has a specific value
If Not IsEmpty(varValue) And varValue = arrTags(lngTag) Then
Set oCCs = ActiveDocument.SelectContentControlsByTag(arrTags(lngTag))
For Each oCC In oCCs
If oCC.Type = wdContentControlCheckBox Then
oCC.LockContents = False
oCC.Checked = True
oCC.LockContents = True
End If
Next oCC
End If
Next lngTag
Next lngProp
lbl_Exit:
Exit Sub
End Sub
P.S. nothing wrong with using variant arrays, I just like string arrays best for this sort of thing