Как я могу запустить код, когда любое значение флажка изменяется в пользовательской форме?
Я пытаюсь использовать модуль класса, но код действует странным образом, который я не понимаю.
Код распознает только то, что значение флажка изменилось в самый первый раз, когда это происходит, если и только если в коде установлена точка останова для события _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 "возвращает некоторые из моих опций и переключателей, и я не знаю почему. Заявления "Добавить не", кажется, исправляют это, но все еще кажется странным, что это происходит.