Отмените выбор всей группы параметров, если выбрана другая кнопка выбора вне группы - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть optionbutton1 и optionbutton2.

У меня также есть еще 8 дополнительных кнопок, сгруппированных под именем группы "категория".

Я хочу отменить выбор любой кнопки опции из имени группы "category", если OptionButton1.Value = True или Optionbutton2.Value = True.

Я пробовал это, но это не работает, и это слишком долго. Должен быть другой путь

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Or OptionButton2.Value = True Then OptionButton4.Value = False And OptionButton5.Value = False And OptionButton6.Value = False And _
OptionButton7.Value = False And OptionButton8.Value = False And OptionButton9.Value = False And OptionButton10.Value = False And OptionButton11.Value = False

End Sub

1 Ответ

1 голос
/ 01 февраля 2020

Во-первых, нет необходимости в вашем операторе If, поскольку первое условие всегда будет иметь значение True при нажатии OptionButton1. Во-вторых, каждый оператор, который устанавливает для кнопки выбора значение False, должен находиться на отдельной строке и без оператора And. Вместо этого попробуйте следующее ...

Private Sub OptionButton1_Click()
        OptionButton4.Value = False
        OptionButton5.Value = False
        OptionButton6.Value = False
        OptionButton7.Value = False
        OptionButton8.Value = False
        OptionButton9.Value = False
        OptionButton10.Value = False
        OptionButton11.Value = False
End Sub

Однако есть альтернатива ...

Private Sub OptionButton1_Click()

    Dim ctrl As MSForms.Control
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "OptionButton" Then
            If ctrl.GroupName = "Category" Then
                ctrl.Value = False
            End If
        End If
    Next ctrl

End Sub

На самом деле, поскольку вы хотите сбросить кнопки выбора «Категория», когда OptionButton1 или OptionButton2 вместо этого попробуйте следующее ...

Private Sub OptionButton1_Click()
   Call ResetCategoryOptionButtons
End Sub

Private Sub OptionButton2_Click()
   Call ResetCategoryOptionButtons
End Sub

Private Sub ResetCategoryOptionButtons()
    Dim ctrl As MSForms.Control
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "OptionButton" Then
            If ctrl.GroupName = "Category" Then
                ctrl.Value = False
            End If
        End If
    Next ctrl
End Sub

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...