Private Sub UserForm_Initialize()
Dim nam As Name, t
For Each n In ThisWorkbook.Names
If n.Name = "Check" Then t = Split(Replace(n.Value, "=""", ""), ";"): Exit For
Next
If IsArray(t) Then
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "CheckBox" Then
A = A + 1: Ctrl.Value = Val(t(A - 1))
End If
Next
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim Ctrl, A&, t(), nam As Name
On Error Resume Next
Set nam = ThisWorkbook.Names.Add("Check", "0)")
On Error GoTo 0
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "CheckBox" Then
A = A + 1: ReDim Preserve t(1 To A): t(A) = Abs(Ctrl.Value)
End If
Next
Debug.Print Join(t, ";")
ThisWorkbook.Names("Check").Value = Join(t, ";")
End Sub