Notifications
Clear all

Frame2 visible true se botão do opção for true no Frame1

11 Posts
3 Usuários
0 Reactions
3,004 Visualizações
(@valzito)
Posts: 22
Eminent Member
Topic starter
 

Bom dia senhores.

Tenho no formulário 2 frames com alguns botões de opção. O Frame 2 está com a propriedade visible = false e o frame1 true. Gostaria que fosse true apenas quando algum dos botões de opção do frame1 for marcado.
Não postei o arquivo aqui por se tratar de algo simples, mas que pra mim, que estou aprendendo VBA agora, já é um desafio :D

abç.

 
Postado : 10/11/2019 10:44 am
(@laerteb)
Posts: 67
Trusted Member
 

Boa noite, valzito

Amigo, para a sua dúvida pode usar esses códigos exemplos abaixo:

Private Sub OptionButton1_Click()

  If Me.OptionButton1.Value = True Then
    Me.Frame2.Visible = True
    
  End If

End Sub

Private Sub OptionButton2_Click()

 If Me.OptionButton2.Value = True Then
   Me.Frame2.Visible = True
   
 End If

End Sub

Private Sub UserForm_Initialize()

 Me.Frame2.Visible = False

End Sub

Verifique se era o que queria :)

Qualquer coisa estamos aqui ;)

Aguardando sua resposta e seu Feed Back( é muito importante) ... se foi útil, não esqueça de clicar na "mãozinha" :D

LaerteB :D

 
Postado : 10/11/2019 9:42 pm
Mauro Coutinho
(@coutinho)
Posts: 95
Estimable Member
 

valzito, utilize no Evento "UserForm_QueryClose" do UserForm:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim C As Object
    For Each C In Controls
        If TypeName(C) = "OptionButton" Then
            If C.Value = True Then
                C.Value = False
            End If
        End If
    Next C
End Sub

Mauro Coutinho

 
Postado : 11/11/2019 7:11 am
(@valzito)
Posts: 22
Eminent Member
Topic starter
 

Boa tarde Coutinho.

No caso eu teria que renomear a linha do primeiro If? Não consegui fazer funcionar :D Poderia mostrar como ficaria no Arquivo exemplo? Queria que ao fechar o form2 todos os botões retorne a propriedade value false.

https://www.dropbox.com/s/uxdaugws4wavb ... o.zip?dl=0

abç

 
Postado : 11/11/2019 12:02 pm
(@laerteb)
Posts: 67
Trusted Member
 

Boa tarde, valzito

O que o nosso amigo e "Fera" Mauro Coutinho escreveu na mensagem anterior funciona perfeitamente,
mas é para o UserForm1 (que contém os OptionButtons) que no seu caso não se encaixa pelo
fato ser para o UserForm2, não é ?

Você pode usar o código abaixo no UserForm2:

Private Sub UserForm_Terminate()

  Call limpabotoesopcoes

End Sub

E em um módulo colocar esses códigos abaixo:

Sub limpabotoesopcoes ()

 UserForm1.OptionButton1.Value = false
 UserForm1.OptionButton2.Value = false
 UserForm1.OptionButton3.Value = false
 UserForm1.OptionButton4.Value = false

End Sub

E não se esqueça de Alterar os nomes dos OptionButton conforme estão no seu projeto e
se for necessário tirar ou acrescentar, quantos forem os OptionButtons no seu UserForm1 ;)

OBS: não olhei o seu arquivo exemplo, caso seja necessário me informe na sua resposta :D

Verifique se assim ficará de acordo com o que pediu :)

Aguardando sua resposta e seu Feed Back(é muito importante) ... se foi útil, não esqueça de clicar na "mãozinha" :D

LaerteB :D

 
Postado : 11/11/2019 1:04 pm
Mauro Coutinho
(@coutinho)
Posts: 95
Estimable Member
 

LaerteB, eu entendi o que quiz dizer, mas só para esclarecer, o Evento "UserForm_QueryClose" pode ser utilizado em qualquer UserForm, não é especifico de um, ou seja, todos os UserForm que tiver em um projeto podemos utiliza-lo, e irá executar as instruções qdo o mesmo for fechado pelo "X" que foi a pergunta do valzito.

No caso do exemplo do valzito, dei uma olhada, e a única alteração seria referenciar o UserForm1, uma vez que estará com o UserForm2 aberto e quer limpar os controles do 1, agora se for ter controles no 2, ai sim usariámos "ME" que se refere ao que está em evidencia no momento.

Valzito, coloque essa instrução no Form2 e veja se seria isso:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Dim C As Object
    
    For Each C In UserForm1.Controls
        If TypeName(C) = "OptionButton" Then
            If C.Value = True Then
                C.Value = False
            End If
        End If
    Next C
    
End Sub

[]s
Mauro Coutinho

 
Postado : 11/11/2019 1:21 pm
(@laerteb)
Posts: 67
Trusted Member
 

Boa tarde, Mauro Coutinho

Nossa um vacilo meu, não me atentei a este detalhe... outra coisa desculpe ter respondido é
que estava olhando este Tópico e achei que podia contribuir :oops: ...

O seu código é muito mais prático e obrigado por me esclarecer com o seu conhecimento :) ..

Abraços

LaerteB :D

 
Postado : 11/11/2019 1:30 pm
Mauro Coutinho
(@coutinho)
Posts: 95
Estimable Member
 

Boa tarde, Mauro Coutinho

Nossa um vacilo meu, não me atentei a este detalhe... outra coisa desculpe ter respondido é
que estava olhando este Tópico e achei que podia contribuir :oops: ...

O seu código é muito mais prático e obrigado por me esclarecer com o seu conhecimento :) ..

Abraços

LaerteB :D

Laerte, nada de se desculpar, tem mais é que participar mesmo, eu já comentei uma vez, o VBA é bem dinamico e temos varias opções para um mesmo resultado, eu mesmo aprendo a cada dia e já me surpreendi com dicas dos colegas bem mais simples do que as que eu usava, então sinta-se sempre a vontade para se intrometer em qualquer tópico.
Ah e outra coisa, a sua rotina tambem é de grande ajuda, é uma outra opção, e se não fosse voce ter comentado eu não teria percebido que cometi uma "gafe", pois respondi correndo e esqueci que ele está utilizando 02 UserForms e a ação era para o UserForm2.

Agradeço a sua obs.

[]s
Mauro Coutinho

 
Postado : 11/11/2019 1:38 pm
(@valzito)
Posts: 22
Eminent Member
Topic starter
 

Laerte, ficou perfeiro!! :D

Muito obrigado mais uma vez!

Agradeço também ao amigo Coutinho que também está sempre ajudando!!

 
Postado : 11/11/2019 1:45 pm
Mauro Coutinho
(@coutinho)
Posts: 95
Estimable Member
 

Laerte, Só mais uma observação, como se trata de um Forum de ajuda voluntária onde dependemos de tempo livre para respondermos, nem sempre conseguimos acompanhar em tempo real e as vezes até demoramos para conseguir rever, por isso que é importante sempre a participação de todos em qualquer Tópico, muitas vezes qdo volto a ver um tópico em que comecei a responder, vejo que já teve a aprticipação de outros colegas e já foi até resolvido, então se não estiver fechado, comento só se tiver uma obs a mais que venha a ajudar.

[]s
Mauro Coutinho

 
Postado : 11/11/2019 1:46 pm
(@laerteb)
Posts: 67
Trusted Member
 

Boa tarde, Mauro Coutinho e valzito

Valzito muito obrigado você e Mauro agradeço muito também, aqui neste Fórum
ajudarmos quando temos tempo livre; tento contribuir com o conhecimento que
tenho em VBA e Excel, pois sei como é difícil as vezes encontrar uma solução quando
temos um entrave...

Abraços

LaerteB :D

 
Postado : 11/11/2019 2:54 pm