Notifications
Clear all

Fechar userform, com critérios.

2 Posts
2 Usuários
0 Reactions
912 Visualizações
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Pessoal,

No meu projeto de Controle de Despesas pessoais, afim de visualizar todas as movimentações de entrada/saída por cada Fornecedor/Cliente, eu utilizo uma userform nomeada como: Input_Output.

O que acontece é que a mesma pode ser chamada por diversos locais do projeto, ou seja, caso eu estiver na userform de cadastro, indicadores ou menu iniciar, eu posso abri-la.

Para que a userform Input_Output não sobreponha a userform que o abriu, eu utilizo o .hide, e um textbox na própria Input_Output para ser uma variável de encerramento da mesma, vejam abaixo:

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Text = 1 Then

Unload Me

indicadores.Show

Exit Sub
End If

If TextBox1 = 2 Then
Unload Me

menu_iniciar.Show

Exit Sub

End If

If TextBox1 = 3 Then
Unload Me

cadastros.Show

Exit Sub

End If

End sub

Isso funciona perfeitamente no Duplo click, mas o que deve ser feio para que esse código funcione ao clicarmos no X da userform?

eu já tentei:

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

Private Sub UserForm_Terminate()

mas não obtive êxito.

 
Postado : 21/01/2015 2:13 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Olha, creio que pode ser por causa dos eventos, segue um exemplo que eu tinha aqui, veja se consegue adaptar.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If eventos = nao Then Exit Sub
    
Dim resposta As Long

resposta = MsgBox("Deseja fecahr o formulário?", vbExclamation + vbSystemModal + vbYesNo)
If resposta = sim Then
    eventos = nao
      Me.Hide ' é dispensável, mas eu deixo até terminar o projeto, depois faço a limpa de comando que não preciso
      Unload Me
    eventos = Empty
    Nome_do_formulário_que_abre.Show
Else
    Cancel = True
End If

End Sub
 
Postado : 21/01/2015 2:37 pm