Страницы: 1
RSS
VBA - несколько OptionButton в одной UserForm - активация события по выбору и после подтверждения
 
Добрый вечер,    
 
Подскажите, как поступить. Имеется одна UserForm в которой 10 различных OptionButtons.    
Каждая OptionButton призвана вызывать свой макрос(макросы живут в своих модулях).  
Внизу в этой UserForm есть кнопка "GO".    
 
Что хочется:    
чтобы пользователь мог выбрать нужный ему вариант среди предложенных OptionButton, нажал кнопку "GO" и только после этого запустился нужный макрос.    
 
Есть по этому вопросу 2 мысли:    
 
1-ая:  
Private Sub Go_Click()  
Dim XX As Variant  
 
XX = OptionButton.Name  
Select Case XX  
   Case OptionButton1    
        Макрос1  
   Case OptionButton2  
        Макрос2  
End Select  
End Sub  
 
Не работает, т.к., подозреваю, нет такого объекта OptionButton  
 
2-ая мысль  
 
If OptionButton1.Value = True Then  
Call Макрос1  
ElseIf OptionButton1.Value = False Then  
Call Макрос2  
End If  
End Sub  
 
Не знаю, пройдет ли с десятью Elseif... Да и как-то больно сложно выглядит...    
 
Дайте добрый совет, как поступить?
 
{quote}{login=Nata Li}{date=05.08.2009 06:42}{thema=VBA - несколько OptionButton в одной UserForm - активация события по выбору и после подтверждения}{post}Добрый вечер,    
 
Подскажите, как поступить. Имеется одна UserForm в которой 10 различных OptionButtons.    
Каждая OptionButton призвана вызывать свой макрос(макросы живут в своих модулях).  
Внизу в этой UserForm есть кнопка "GO".    
 
Что хочется:    
чтобы пользователь мог выбрать нужный ему вариант среди предложенных OptionButton, нажал кнопку "GO" и только после этого запустился нужный макрос.    
 
Есть по этому вопросу 2 мысли:    
 
1-ая:  
Private Sub Go_Click()  
Dim XX As Variant  
 
XX = OptionButton.Name  
Select Case XX  
   Case OptionButton1    
        Макрос1  
   Case OptionButton2  
        Макрос2  
End Select  
End Sub  
 
Не работает, т.к., подозреваю, нет такого объекта OptionButton  
 
2-ая мысль  
 
If OptionButton1.Value = True Then  
Call Макрос1  
ElseIf OptionButton1.Value = False Then  
Call Макрос2  
End If  
End Sub  
 
Не знаю, пройдет ли с десятью Elseif... Да и как-то больно сложно выглядит...    
 
Дайте добрый совет, как поступить?{/post}{/quote}  
 
Попробуй создать группу (Frame1) и поместить туда твои OptionButton. Затем просто перебирай эти элементы в цикле For ... each вот пример  
 
Private Sub CommandButton1_Click()  
For Each obj In Frame1.Controls  
       If obj.Value = True Then  
           Select Case obj.Name  
           Case "OptionButton1"  
               Call Macros1  
           Case "OptionButton2"  
               Call Macros2  
           Case "OptionButton3"  
               Call Macros3  
           End Select  
       End If  
Next obj  
End Sub  
 
Sub Macros1()  
MsgBox "Запущен макрос1"  
End Sub  
 
 
Sub Macros2()  
MsgBox "Запущен макрос2"  
End Sub  
 
 
Sub Macros3()  
MsgBox "Запущен макрос3"  
End Sub
 
Это мысль! :-)  
Спасибо, сейчас попробую
 
{quote}{login=The_Prist}{date=05.08.2009 08:57}{thema=}{post}Select Case True  
Case OptionButton1:Macros1  
Case OptionButton2:Macros2  
Case OptionButton3:Macros3  
End Select{/post}{/quote}  
 
как все оказывается очень просто..
Страницы: 1
Читают тему
Наверх