Bom dia Valzito,
Com relação ao que eu faria neste caso tendo 34 controles kkk
Quando elaboramos uma rotina em código, geralmente é para facilitar a vida do usuário, por isto é importante minimizar o trabalho do usuário, por isto ao invés de instruir ao usuário que ele deve clicar no "checkbox" primeiro para depois clicar no "optionbutton" eu simplesmente assumo e elaboro algo em que ele pode realizar das duas formas, o que não necessariamente quer dizer que precisamos fazer "Corno Job", sempre há uma maneira de minimizar o nosso trabalho, na maioria das vezes apenas não conhecemos:
No seu caso, não é possível escrever em apenas uma sub de um dos controles o que deseja ser feito, pois um "event handler" (no caso a ação de clicar) está diretamente ligado ao seu controle.
Maaaassss....
Você pode criar uma sub para dizer o que quer fazer ao clicar nos butões, e em cada "event handler" você apenas chama a sub, usando no exemplo anterior:
sub exemplo()
If UserForm1.Frame1.OptionButton1 = True And UserForm1.CheckBox1 = True Then
Worksheets("plan1").Shapes("imagem1").CopyPicture
Set Image1.Picture = PastePicture(xlPicture)
ElseIf UserForm1.Frame1.OptionButton2 = True And UserForm1.CheckBox1 = True Then
Worksheets("plan2").Shapes("imagem2").CopyPicture
Set Image1.Picture = PastePicture(xlPicture)
Else
Set Image1.Picture = Nothing
End If
end sub
Private Sub CheckBox1_Click()
call exemplo
End Sub
Private Sub OptionButton1_Click()
call exemplo
End Sub
Private Sub OptionButton2_Click()
call exemplo
End Sub
Na verdade, isto é até o mais indicado, eu acho que deveria ter mencionado antes...
Sobre a estrutura de For edito este comentário assim que chegar em casa rsrs
Postado : 08/11/2019 9:22 am