Notifications
Clear all

Evento ao perder o foco de Userform

4 Posts
2 Usuários
0 Reactions
1,055 Visualizações
selmo
(@selmo)
Posts: 236
Estimable Member
Topic starter
 

Olá galera, boa noite!
Probleminhas sempre acontecem, e gostaria de se possivel, uma ajudinha em projeto que nescessita de mais um critério de segurança, uma vez que o formulário é aberto a planilha fica oculta durante a execução do mesmo, mas se um novo arquivo é aberto ainda com o form na tela, então é apresentado um erro. Gostaria de que o userfom fosse fechado automaticamente assim que o mesmo perdesse o foco.

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 02/06/2015 3:22 pm
(@srobles)
Posts: 231
Estimable Member
 

Selmo, boa noite!

Já tentou utilizar o evento WorkBook_WindowDeactivate da planilha que contém o UserForm? Creio que funcionaria.

Tente :

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Unload Userform1
    Application.Visible = True
    ThisWorkbook.Close (True)
End Sub

[]s

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 02/06/2015 4:07 pm
selmo
(@selmo)
Posts: 236
Estimable Member
Topic starter
 

Não entendi bem o funcionamento deste codigo.....

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 04/06/2015 4:15 pm
(@srobles)
Posts: 231
Estimable Member
 

Selmo, bom dia!

Se eu entendi bem, vc gostaria que o form fosse finalizado caso outra planilha fosse aberta correto?

Então vamos lá:

No evento WorkBook_WindowDeactivate da planilha que contém o form, caso a janela perca o foco, o que ocorrerá quando vc abrir outra planilha, vc simplesmente obriga o form a fechar "Unload UserForm1", exibe a aplicação "Excel" e se for o caso, fecha a pasta salvando as alterações "ThisWorkBook.Close(true) , evitando assim que o erro ocorra e permite que a outra pasta seja aberta. Agora se preferir apenas fechar o form, use no evento "Unload Userform1".

Fecha o form, exibe a aplicação, salva e fecha a pasta

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Unload Userform1 'fecha o form
    Application.Visible = True 'exibe o Excel
    ThisWorkbook.Close (True) 'salva alterações e fecha a pasta
End Sub

Fecha o form e exibe a aplicação

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Unload Userform1 'descarrega seu form
    Application.Visible = True 'exibe o Excel
End Sub

Espero ter ajudado, qq coisa estamos ae!

[]s

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 04/06/2015 10:00 pm