Notifications
Clear all

Userform fechando planilhas ja abertas

15 Posts
5 Usuários
0 Reactions
1,865 Visualizações
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

Bom estou com problemas na minha programação VBA pois não consigo executar o Userform sem que ele feche outras planilhas abertas, já fiz uma pesquisa em vários tópicos, mas nenhum conseguiu resolver meu problema então, vou postar uma parte da minha programação para ver se alguém pode me ajudar.

Desde já, agradeço.

---------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()

Plan1.Range("A2").Select
CarregarDadosNoFormulario
Application.Visible = False

End Sub

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

Cancel = 1
ActiveWorkbook.Save
Application.Quit

End Sub

Private Sub Workbook_Open()

frmAgenda2.Show

End Sub

----------------------------------------------------------------------------------------------------

 
Postado : 28/09/2015 8:14 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Olá!
Application.Quit não seria muito radical para sua necessidade?? Por este comando é para encerrar o programa do Excel, incluindo todas pastas de trabalho abertas.

Acho que seria mais aplicável utilizar ActiveWorkbook.Close para encerrar somente a pasta de trabalho ativa.

Abs.

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 28/09/2015 10:14 am
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

Agradeço sua sugestão Rafael, mas o meu problema é que o USERFORM está fechando uma planilha normal do excel aberta antes, eu gostaria de saber como neutralizar esse problema, para que ambas trabalhem simultaneamente abertas.

 
Postado : 28/09/2015 11:32 am
(@nelson-s)
Posts: 96
Trusted Member
 

Experimente alterar o código desta forma:

Private Sub UserForm_Initialize()

Plan1.Range("A2").Select
CarregarDadosNoFormulario
'Application.Visible = False
Application.Visible = True   '* <---- Alteracao.

End Sub
 
Postado : 29/09/2015 9:23 am
(@srobles)
Posts: 231
Estimable Member
 

tiagotadeu, boa noite!

Experimente utilizar as propriedades contidas em "Esta pasta de trabalho".

Ex:

Na pasta que contém o UserForm, pelo editor do VB, vá em "Esta Pasta de Trabalho" e no campo Geral selecione WorkBook e no campo ao lado procure por WindowActivate e faça :

Private Sub Workbook_WindowActivate(ByVal Wn As Window)

UserForm1.Show
Application.Visible=False

End Sub

Agora faça o mesmo processo ainda na mesma Pasta, porém utilize a propriedade WindowDeactivate :

Private Sub Workbook_WindowActivate(ByVal Wn As Window)

UserForm1.Hide
Application.Visible=True

End Sub

Faça como o amigo Issamu orientou e tudo funcionará conforme esperado.

Teste e nos retorne.

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 29/09/2015 7:48 pm
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

srobles, fiz a alteração conforme você falou, ele continua fechando uma outra planilha já aberta, mas quando fecho meu arquivo vba ele me retorna a planilha que ja estava aberta. Resolveu o problema em partes, pois preciso que ambos continuem aberto tanto o VBA quanto uma planilha normal. Agradeço mesmo assim a ajuda.

 
Postado : 30/09/2015 2:29 pm
(@srobles)
Posts: 231
Estimable Member
 

tiagotadeu,

Procure em todas as suas planilhas por quaisquer códigos que possam vir a fechar elas, caso algum evento tanto em Formulários quanto em eventos de Receber Foco ou Perder Foco na aplicação. Normalmente esta alteração que citei, apenas esconde seu form e torna a aplicação visivel novamente, como pode ser notado, e creio que haja algum código neste form que envia o comando para fechar as demais planilhas (aplicação toda)
Sem um modelo para estudo, as respostas acabam por se tornar superficiais. Poste um modelo se possivel.

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 04/10/2015 1:17 pm
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

Bom dia Saulo Robles, segue em anexo o modelo do programa em VBA, obrigado pela compreensão.

 
Postado : 05/10/2015 6:06 am
(@srobles)
Posts: 231
Estimable Member
 

tiagotadeu, bom dia!

Fiz umas alterações no seu modelo.
Inseri um combobox que lista todas as planilhas abertas na aplicação do excel.
Veja se te atende ok?

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 12/10/2015 9:09 am
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

Boa trade Saulo, a planilha que você mandou não está abrindo 2 planilhas simultâneas, como eu queria que ocorresse, essa questão de fechar so a planilha de vba ja tinha conseguido +/- com o código que você havia passado anteriormente e uma outra coisa que está ocorrendo é que ele esta deixando uma planilha com fundo cinza, quando clico em fechar, agradeço mesmo assim pela ajuda.

 
Postado : 15/10/2015 10:37 am
(@srobles)
Posts: 231
Estimable Member
 

tiagotadeu,

Fiz umas modificações no formulário. Agora pode-se abrir mais de uma planilha.

Faça os teste e se possível retorne.

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 25/10/2015 2:07 pm
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

Bom dia Saulo, a planilha que você me passou funcionou em partes, o que você fez é o que quero mesmo, so que esta dando erro de "Subscrito fora do intervalo" e está retornando erro na ComboBox1, na linha destacada em vermelho. Mesmo assim agradeço pela sua ajuda.

Private Sub ComboBox1_Change()
'On Error Resume Next
If ComboBox1.Value = "" Then Exit Sub
If ComboBox1.Value <> ThisWorkbook.Name Then
Plan1.Visible = xlSheetHidden
Application.Visible = True
Windows(ComboBox1.Value).Activate <----------
Unload Me
Else
Application.Visible = False
Plan1.Visible = True
Plan1.Activate
frmAgenda2.Show
End If
End Sub

 
Postado : 27/10/2015 7:38 am
(@srobles)
Posts: 231
Estimable Member
 

tiagotadeu,

Experimente substituir o código do ComboBox_Change() por este:

Private Sub ComboBox1_Change()
    If ComboBox1.Value = "" Then Exit Sub
    If ComboBox1.Value <> ThisWorkbook.Name Then
        Dim nomePasta As String
        nomePasta = ComboBox1.Value
        Plan1.Visible = xlSheetHidden
        Application.Visible = True
        Application.Windows(nomePasta).Activate
        Unload Me
    Else
        Application.Visible = False
        Plan1.Visible = True
        Plan1.Activate
        frmAgenda2.Show
    End If
End Sub

Qual a versão do Office que você utiliza?

Aguardo retorno.

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 27/10/2015 9:49 pm
(@tiagotadeu)
Posts: 7
Active Member
Topic starter
 

Desculpe a demora, a planilha que você mandou realmente funcionou, eu estava utilizando o Office 2013 depois que atualizei para o Office 2016 não tive mas o problema relatado, a única coisa que não consigo fazer agora é alterar outras planilhas quando a Agenda está aberta, mas quando clico em sair, a planilha que já estava aberta volta a ser visualizada perfeitamente.

 
Postado : 11/02/2016 11:29 am
(@mprudencio)
Posts: 2749
Famed Member
 

Esse é um grande problema qdo se oculta a aplicação

application.visible = false

vc fica preso a esta aplicaçao somente

Eu pessoalmente nao gosto de usar esse recurso, justamente por esta razão, mas é uma questão de gosto.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 11/02/2016 12:01 pm