Alternar (abrir e fechar) entre janelas (Forms)

Olá… sou novo aqui e iniciante em VBA.

Minha dúvida é sobre o seguinte. Criei um Userform(1) com vários “botões de opção” (chamarei de índice), a medida que faço a seleção, minha ideia é que outro Userform(2) se abra e o primeiro se feche (ou se esconda) e que ao encerrar esse último, a aplicação retorne ao “índice”.
Tudo isso, de fato, se resolveu com o simples “unload me”. Contudo, realizando meus testes, vi que, se eu fizer esta operação por duas vezes seguidas selecionando o mesmo índice (ou seja, abrindo a mesma Userform(2) seguidas vezes, por exemplo), minha aplicação trava e preciso usar o comando Ctrl+Pause/Break para que ele se encerre.

Não sei se fui claro, mas gostaria de consertar esse probleminha. Como as postagens que encontrei aqui a esse respeito tem um certo tempo e não resolvem meu problema por completo, e algum colega puder me ajudar, agradeço imensamente.

Olá Alexandre…
Quando um objeto é descarregado, unload.me, ele é removido da memória e toda a memória associada ao objeto é recuperada pelo sistema.
Você fez isto para carregar o formulário:
Load UserForm2
UserForm2.Show
ou isto sem o unload.me
UserForm1.Hide
UserForm2.Show

espero ter ajudado

Olá Iporto, desde já agradeço sua disponibilidade em me responder.

Então, eu tentei de todas essas formas, mas infelizmente, sem sucesso.

Vou copiar o código aqui para que possa apreciá-lo mais de perto. Já que como sou novo aqui, NÃO POSSO ENVIAR ARQUIVOS. Mas espero que seja possível me dar uma “LUZ” ( redundante isso aqui nesse forum rsrsrs)

Código que direciona o Menu (UserForm(1) é quem chama os demais formulários):

Private Sub OptionButton1_Click()

Unload Me
UserForm2.Show

End Sub
Private Sub OptionButton2_Click()

Unload Me
UserForm3.Show

End Sub

Private Sub OptionButton3_Click()

Unload Me
UserForm4.Show

End Sub

Private Sub OptionButton4_Click()

Unload Me
UserForm6.Show

End Sub

Private Sub OptionButton6_Click()

Unload Me
UserForm5.Show

End Sub

Abaixo, o que deveria fazer o Userform(2), (3) … todos os outros quando finalizados no botão fechar “X”

Private Sub UserForm_Terminate()

Unload Me
UserForm1.Show

End Sub

Quando repito a operação no mesmo Menu escolhido anteriormente o processo trava.

Oi Alexandre. Vou detalhar o que fiz.
Montei 6 forms para ficar semelhante ao que vc fez:

Crie um modulo e nele coloque o seguinte

Public pasta As String
Sub carrega_form()
Load UserForm
UserForm.Show nomodal
End Sub

image

No Userform1, coloque tudo isto, mas de acordo com a sua programação:

Private Sub OptionButton1_Click()
UserForm2.Show
End Sub

Private Sub OptionButton2_Click()
UserForm3.Show
End Sub

Private Sub OptionButton3_Click()
UserForm4.Show
End Sub

Private Sub OptionButton4_Click()
UserForm5.Show
End Sub

Private Sub OptionButton5_Click()
UserForm6.Show
End Sub

image

Você precisa “tirar o click” quando voltar para o form1 e eu esqueci de colocar ai para vc.
é este comando:
OptionButton1.value = false
OptionButton2.value = false
OptionButton3.value = false
OptionButton4.value = false
OptionButton5.value = false
OptionButton6.value = false

Veja se funcionou…
abs

Olá novamente Iporto, bom dia!!!
Infelizmente não deu certo pra mim na forma como apresentou. Duas questões foram empecilho.

1º - A sobreposição dos forms é algo que eu não queria (abre uma form sobre a outra em cascata). Eu gostaria que, ao abrir um Form o outro se fechasse (ou se escondesse)

2º - O problema do travamento persiste. Como disse anteriormente, clico no botão desejado, ele abre o Form solicitado. Se fechar esse que foi aberto e ao retornar ao menu principal voltar a clicar no mesmo botão, o processo para. Essa situação então continua

Obs: eu não consegui compreender o módulo que foi criado (qual a sua aplicação?)

Até me dei ao trabalho de procurar na internet se havia algum endereço de e-mail seu que pudesse encaminhar o projeto (no site cet.com.br que está no seu perfil). Já que infelizmente, por aqui não consigo, por ser membro “novato”. Mas achei um pouco de abuso da minha parte mandar sem seu consentimento, então se permitir.

Mesmo assim te agradeço imensamente em dispensar um pouco do seu tempo para ensinar. Sou muito grato por isso.

Abrax

Bom dia.
Quando criado no módulo, serve para qualquer planilha, e não apenas para a plan1 ou plan2, etc.
Agora, persiste o travamento ? Estranho… Qual a sua versão do excel ?
No aguardo

Então, estou usando o Excel 2010

Bom dia… então tente este que estou te enviando… Estou inibindo o fechar e coloquei um botão para fechar. Tive problemas assim, e acabei usando o TabStrip. Não tive mais problemas, mas assim como no exemplo que estou te enviando funciona.
Dá uma olhada e qualquer coisa me avise.
Abs

lporto to alexandre.xlsm (20,6,KB)

1 Curtida

Mestre… Muito Obrigado, de coração.

PROBLEMA RESOLVIDO !!!

Só é uma pena não conseguir utilizar o BOTÃO FECHAR do próprio Form “X” para executar esse abre e fecha entre Forms.

Mas está perfeito, eu me adapto e vamos trabalhar.

Mais uma vez obrigado!

Disponha. Como disse, tive o mesmo problema e mudei tudo para o MULTIPAGE (e não tabstrip)…rs
Depois te mando um exemplo. Até achei que ficou mais legal !
Bom trabalho.

Alexandre, dá uma olhada no multipage.

abs
lporto to alexandre 2.xlsm (485,2,KB)

1 Curtida

Oi Alexandre, nosso site está fora do ar para reformulação, mas o meu email é luiz@cet.com.br
Se precisar, fique a vontade, mas poste aqui no grupo também, pois muita gente que consulta aqui pode ter o mesmo problema.
abs

Olá Luiz, perfeitamente. Havendo necessidade, farei o post aqui com certeza!!!
Abraço