2015-09-30 2 views
0

Я использую пользовательскую форму VBA. Пользовательская форма MassPrompt имеет набор из шести имен GroupNames и некоторых текстовых полей. Каждое имя GroupName содержит два или более переключателя.
Я бы хотел, чтобы следующий код запускался в любое время, когда изменяется любой элемент в GroupName «GROnly». Если пользователь сделал неправильный выбор кнопки в «GROnly» в зависимости от выбора в другой группе, я бы хотел отобразить предупреждающее сообщение и снова представить форму пользователя MassPrompt.
Прямо сейчас, я присвоил код одной кнопке «GROnly_yes». Он работает, но только при нажатии этой кнопки. Как поместить это в код UserForm для запуска в любое время, когда нажата кнопка с именем GroupName «GROnly»? Спасибо, что посмотрели на это.vba userform проверяет имя GroupName вместо отдельной кнопки

Private Sub GROnly_yes_Click() 
'Prompt if the GROnly is true and it's inappropriate for the GSetting choice 
    If GROnly_yes = True And GSetting_renewal = True _ 
    Then 
    GROnly_yes = False 
    GROnly_no = True 
    MsgBox ("The GROnly can't be chosen with a Renewal." & vbNewLine & _ 
      "The GROnly button has been changed to 'NO'.") 
    UserForm_Initialize 
    End If 
    'Other IF statements here. 
End Sub 

ответ

1

Если я хорошо понял, GRonly является GroupBox, который содержит (скажем) в radio_button_1 и radio_button_2.

Причина, по которой код не срабатывает, заключается в том, что когда он изменяет значение одной радиокнопки, он не нажимает на GroupBox, а скорее меняет значение этой единственной радиокнопки.

Вам нужно будет добавить код к событию переключателя _Change. Это пример:

Sub myFunctionalCode() 
    'your code here 
End Sub 

Private Sub radio_button_1_Change() 
    myFunctionalCode 
End Sub 
Private Sub radio_button_2_Change() 
    myFunctionalCode 
End Sub 
0

Спасибо за ответ. Это сработает.

В то же время я придумал еще одну альтернативу. Я удалил код из:

Private Sub GROnly_yes_Click() 

И я переехал его на кнопку, что пользователь нажимает, чтобы отправить форму:

Private Sub ContinueButton_Click() 

В моем исходном коде я должен был изменить UserForm_Initialize к Exit Sub, чтобы сделать код работает в кнопке «отправить».

Еще раз спасибо за помощь. Phil