Endereçar vários co...
 
Notifications
Clear all

Endereçar vários componentes de Form

6 Posts
3 Usuários
0 Reactions
1,568 Visualizações
(@bochio)
Posts: 3
Active Member
Topic starter
 

Fala pessal, estou com um problema que não conseigo resolver e não encontrei nada em nenhum forum que me ajudasse.
Seguinte: Tenho o Userform1 com vários OptionButton, a cada opção selecionada eu chamo o Userform2 que possui alguns outros objetos e lógicas que complementam a opção que foi selecionada no Userform1, até aí perfeito! O problema é que dependendo das ações que o usuário tomar no Userform2 eu preciso modificar o status (desablitar, tirar a seleção, colocar em negrito, etc) do OptionButton que foi selecionado no Userform1 e como a chamada do Userform2 pode vir de qualquer OptionButton isto precisa ser dinâmico. Durante a chamada do Userform2 eu passei o nome do OptionButton para uma variavel do Userform1, agora precido de uma lógica que entenda que eu quero modificar o objeto cujo o nome esta dentro daquela variável, como faço isso?

 
Postado : 18/04/2013 10:22 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

bochio,

Boa Tarde!

Você deve criar uma variável global em um módulo e utilizá-la entre os formulários, como no exemplo do arquivo anexo.

 
Postado : 18/04/2013 11:54 am
(@bochio)
Posts: 3
Active Member
Topic starter
 

Olá Wagner, boa tarde e muito obrigado pela atenção.
Até esse ponto eu já cheguei Wagner, meu problema está um pouco mais adiante. Usando o arquivo que você mandou como exemplo, digamos que no Userform2 eu tenha um botão "Cancelar" e que caso eu clique nele eu preciso fechar o Userform2 e ainda tirara a seleção do Optionbutton que originou a sua chamada lá no Userform1, só que de maniera dinâmica, pois tenho mais de 60 Optionbutton no Userform1 e não queria ter que fazer um Selectcase com cada um dos 60 casos possíveis.
Por isso o que eu fiz foi passar para o Userform2 o nome do Optionbutton usado, ou seja, onde você colocou "Botão1, Botão2 ou Botão3" no seu arquivo eu coloquei "Userform1.Optionbutton1, Userform1.Optionbutton2 ou Userform1.Optionbutton3". Agora eu gostaria de usar essa string que contém o nome do Optionbutton para endereça-lo e mudar as propriedades dele.

Abs.

 
Postado : 18/04/2013 12:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tentando contribuir
Eu faria assim:
Incluir no form que recebe o foco um label(fica oculto) com o nome do controle e formulario que o abriu.
Exemplo o option de nome Vai.

Private Sub UserForm_Initialize()
Me.Label1.Caption = frmCADASTRO.txtdescrição.Text
Label1.Caption = frmCADASTRO.OptVai.Name
End Sub

Depois no "fechamento" desse form, retorna para o form primeiro com o controle modificado

Private Sub UserForm_Terminate()
frmCADASTRO.txtsituação.Text = "FEchei tá"
With frmCADASTRO
    For Each ct In .Controls
        If ct.Name = Label1.Caption Then
            If ct.Value = True Then
                ct.Value = False
            Else
                ct.Value = True
            End If
        End If
    Next
End With
End Sub
 
Postado : 18/04/2013 12:18 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Ok.

Aqui vai minha sugestão.

 
Postado : 18/04/2013 12:31 pm
(@bochio)
Posts: 3
Active Member
Topic starter
 

Perfeito Reinaldo, essa parte do seu código era exatamente o que eu precisava:
For Each ct In .Controls
If ct.Name = Label1.Caption Then
If ct.Value = True Then
ct.Value = False
Else
ct.Value = True
End If
End If
Next
End With

Copiei e adaptei ao meu código e funcionou perfeitamente.

Muito obrigado a você Reinaldo e ao amigo Wagner pela força, forte abraço.

 
Postado : 18/04/2013 12:36 pm