Excel VBA: Como posso executar o código quando qualquer valor de caixa de seleção é alterado em um Userform?

0

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.

    
por B-Ballerl 30.05.2016 / 19:53

0 respostas