Как я могу запустить код, когда любое значение флажка изменяется в пользовательской форме?

Я пытаюсь использовать модуль класса, но код действует странным образом, который я не понимаю.

Код распознает только то, что значение флажка изменилось в самый первый раз, когда это происходит, если и только если в коде установлена точка останова для события _Change(). Во всех остальных случаях он не распознает больше изменений.

Вот мой код в Userform_Initalize()

Private Sub UserForm_Initialize()

Dim ckCollection As New Collection
Dim ctrl As MSForms.Control
Dim obj As clsCheckBoxes

For Each ctrl In Me.Controls

            If TypeOf ctrl Is MSForms.CheckBox _
       And Not TypeOf ctrl Is MSForms.OptionButton _
       And Not TypeOf ctrl Is MSForms.ToggleButton _       
       And Not ctrl.Name = "ckEditFileDescription" Then    'do not need this particular checkbox in this class module

                    Set obj = New clsCheckBoxes
                    Set obj.Control = ctrl
                    ckCollection.Add obj

             End If
 Next ctrl
 Set obj = Nothing

И вот мой код в моем модуле класса clsCheckBoxes

Private WithEvents xlCheckBoxes As MSForms.CheckBox

Public Property Set Control(cK As MSForms.CheckBox)
    Set xlCheckBoxes = cK
End Property

Private Sub xlCheckBoxes_Change()

    Call CheckVisibility
    'This is the code I want to run when any of the checkboxes change
    'but it seems to only recognize the event if the "Call CheckVisibility" is a 
    'breakpoint, and even then, it will only recognize the first time a checkbox value 
    'is changed

End Sub

На заметку «Если TypeOf Ctrl - MSForms.CheckBox "возвращает некоторые из моих опций и переключателей, и я не знаю почему. Заявления "Добавить не", кажется, исправляют это, но все еще кажется странным, что это происходит.

0