Como posso executar o código quando algum valor da caixa de seleção é alterado em uma forma de usuário?
Eu estou tentando usar um módulo de classe, mas o código está agindo de uma maneira estranha que eu não entendo.
O código só reconhecerá que o valor de uma caixa de seleção foi alterado na primeira vez em que ocorre se, e somente se, houver um ponto de interrupção definido no código para o evento _Change (). Todas as outras instâncias não reconhecem mais alterações.
Aqui está o meu código em 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
E aqui está o meu código no meu módulo de classe 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
Em uma nota lateral, "Se o TypeOf ctrl for MSForms.CheckBox" estiver retornando algumas das minhas caixas de opção e botões de alternância e não sei por quê. As declarações "Adicionar Não" parecem consertá-lo, mas ainda parece estranho que isso esteja acontecendo.