Кнопки выбора, выделенные серым цветом, когда выбрана указанная кнопка выбора c - PullRequest
0 голосов
/ 02 февраля 2020

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

Это мой первоначальный пост: Отмените выбор всей группы кнопок выбора, если выбрана другая кнопка выбора вне группы

Но теперь я хотел бы иметь следующее:

Если OptionButton1.Value = True или OptionButton2.Value = True, то Gray out OptionButton4 до OptionButton11 (также дал ему название группы: «Категория»).

Но, если OptionButton3.Value = True, то он отключает OptionButton4 до OptionButton11 (категория группы).

РЕДАКТИРОВАТЬ:

I сделал что-то, и это сработало, но как только я запустил свою пользовательскую форму и сгенерировал число (цель пользовательской формы), кнопки выбора остаются серыми. Вот код, который я использовал:

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

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

РЕДАКТИРОВАТЬ 2:

Мое решение сейчас состоит в том, чтобы добавить

Unload Me
UserForm1.Show

, чтобы он сбросил мой пользовательской формы и удалить серые кнопки выбора

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020
  1. Вместо того, чтобы выгружать и перезагружать форму, обработайте включение / отключение.
  2. Создайте общую процедуру для обработки включения / выключения, чтобы вам не приходилось дублировать код.
  3. Вы можете l oop через все элементы управления, которые не только уменьшат строки кода, но его будет проще поддерживать.

Это то, что вы пытаетесь?

Option Explicit

Private Sub OptionButton1_Click()
    EnableOptBtns False
End Sub

Private Sub OptionButton2_Click()
    EnableOptBtns False
End Sub

Private Sub OptionButton3_Click()
    EnableOptBtns True
End Sub

Private Sub EnableOptBtns(enable As Boolean)
    Dim ctl As Control
    Dim i As Long

    For i = 4 To 11
        Me.Controls("OptionButton" & i).Enabled = enable
    Next i
End Sub

enter image description here

0 голосов
/ 02 февраля 2020

Похоже, вы решили свою проблему. Другой вариант - создать подпрограмму проверки, которая будет проверять все каждый раз, когда выбирается опция. Также есть способ получить доступ ко всем элементам управления форм что-то вроде Forms ('myform'). Controls ('mycontrol') Я признаю, что я ржавый, но если вы перебираете итерацию, вы можете отключить enable по желанию и вызвать его при загрузке

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