CheckBox (UserForm) не проверяется при нажатии пользователем

У меня есть два флажка в UserForm (Excel) с именами, например ( , ) .
Проблема в том, что когда я нажимаю A_CB , а затем нажимаю B_CB , тогда B_CB не проверяется автоматически, хотя код под ним выполняется правильно.
Пробовал удалить и создать заново, но та же проблема.
Как ни странно , эта проблема возникает, когда я нажимаю, но если я нажимаюB_CBзатемA_CBтогда нет проблем.
Я даже установил значение для этого флажка = true, но та же проблема.
Заранее благодарен за всю вашу помощь.

      Dim ctrl As control
Dim control As control
 
Private Sub A_CB_Click()
 
  Set ctrl = Me.A_CB
 
    If ctrl = False Then
       ctrl.ForeColor = vbBlack
       ActiveSheet.AutoFilter.ShowAllData                'Clear All Filters
       ActiveSheet.UsedRange.EntireRow.Hidden = False    'UnHide All Rows
       Exit Sub
    End If
 
    ctrl.ForeColor = vbBlue
 
    For Each control In Me.Controls
      If Not TypeOf control Is MSForms.Label Then
      If Not TypeOf control Is MSForms.Frame Then
          If control.name <> ctrl.name Then
             control.value = False
             control.ForeColor = vbBlack
          End If
      End If
      End If
    Next
 
End Sub
 
Private Sub B_CB_Click()
 
  Set ctrl = Me.B_CB
 
    If ctrl = False Then
       ctrl.ForeColor = vbBlack
       ActiveSheet.AutoFilter.ShowAllData
       ActiveSheet.UsedRange.EntireRow.Hidden = False
       Exit Sub
    End If
 
    ctrl.ForeColor = vbBlue
 
    For Each control In Me.Controls
      If Not TypeOf control Is MSForms.Label Then
      If Not TypeOf control Is MSForms.Frame Then
          If control.name <> ctrl.name Then
             control.value = False
             control.ForeColor = vbBlack
          End If
      End If
      End If
    Next
 
End Sub

1 ответ

Когдаb_CBнажимается, вы циклически перебираете все элементы управления и очищаете их значения. Это изменение наa_CBсовпадает с событием Click, а код вa_CB_Clickвыполняется. Это обновление общей переменной с именем . Затем, когда код продолжается внутриb_CB_Click, значение имениctrlбольше не является "b_CB" и поэтому также очищается.

Другие вопросы по тегам