2015-11-27 3 views
0

У меня есть макрос Outlook 2013, где я создал форму. Все объекты (кнопки, текстовые поля, кнопки параметров) добавляются кодом, указанным в событии form.Load().Добавить событие click to optionbutton

Форма имеет две кнопки опции с да/нет. Если нет, то некоторые другие кнопки, текстовые поля должны быть отключены. Мой вопрос заключается в том, как архивировать, что к этим двум кнопкам добавляется обработчик событий?

Мои программно добавлены кнопки:

y = y + 30 
    x = 230 
    Set btnOppYes = Me.Controls.Add("Forms.OptionButton.1", "btnOppYes") 
    With btnOppYes 
     .Caption = "Ja" 
     .Left = x 
     .Top = y 
     .Width = 110 
     .GroupName = "OppYesNo" 
    End With 

    x = x + 110 
    Set btnOppNo = Me.Controls.Add("Forms.OptionButton.1", "btnOppNo") 
    With btnOppNo 
     .Caption = "Nein" 
     .Left = x 
     .Top = y 
     .Width = 110 
     .GroupName = "OppYesNo" 
     .Value = True 
    End With 

Я пытался добавить этот код, но без успеха. Там нет MsgBox, как «тест», когда я нажимаю на кнопку опции:

Sub btnOppYes_Click() 
    MsgBox ("test") 
End Sub 
+0

Какая форма это? Область формы? Форма Windows в надстройке? Пользовательский формат VBA? Форма пользовательского Outlook? –

+0

@ EricLegault - это VBA UserForm – ZerOne

ответ

2

событие не связано с кнопкой, когда его добавляют динамически и внешний вид не позволяет получать доступ к CodeModule как Excel делает. Вот обходной путь.

Вставьте этот код в UserForm

Dim clsbtnOpp As New Class1 
Private Sub UserForm_Initialize() 
    Dim btnOppYes As MSForms.OptionButton 
    Dim btnOppNo As MSForms.OptionButton 
    y = y + 30 
    x = 230 
    Set btnOppYes = Me.Controls.Add("Forms.OptionButton.1", "btnOppYes") 
    With btnOppYes 
     .Caption = "Ja" 
     .Left = x 
     .Top = y 
     .Width = 110 
     .GroupName = "OppYesNo" 
    End With 
    Set clsbtnOpp.btnOppYes = btnOppYes 

    x = x + 110 
    Set btnOppNo = Me.Controls.Add("Forms.OptionButton.1", "btnOppNo") 
    With btnOppNo 
     .Caption = "Nein" 
     .Left = x 
     .Top = y 
     .Width = 110 
     .GroupName = "OppYesNo" 
     .Value = True 
    End With 
    Set clsbtnOpp.btnOppNo = btnOppNo 
End Sub 

И создать новый класс Class1 этот код и вставьте в него

Public WithEvents btnOppYes As MSForms.OptionButton 
Public WithEvents btnOppNo As MSForms.OptionButton 
Private Sub btnOppYes_click() 
    MsgBox "You clicked yes" 
    UserForm1.TextBox1.Enabled = True 
End Sub 
Private Sub btnOppNo_click() 
    MsgBox "You clicked no" 
    UserForm1.TextBox1.Enabled = False 
End Sub 

Выполнить вашу форму и тест. Вы можете поиграть с этим и адаптировать его под свои нужды.

Смежные вопросы