Página 1 de 1

[RESOLVIDO] Como abrir um novo "Sub" e fechar o antigo

Enviado: Dom Abr 05, 2020 4:06 am
por Claudia souza
Eu estou usando "exit sub" pra fechar e "Call" pra abrir o Sub.
O problema é o seguinte, se eu usar o "Exit sub" antes do "call" o sub é fechado e mais nada acontece, mas se eu faço o oposto com o "call" antes do "Exit sub" ele abre os outros suba mas não fecha os antigos

Algo assim
Sub1()
'Codigos
Call sub2
Exit sub
End sub


Sub2()
'Codigos
Call sub3
Exit sub
End sub

Nesse exemplo todos os sub são abertos ao mesmo tempo e se for com o "exit" antes do "call", o primeiro sub fecha e os outros não abrem.

É possível abrir um sub e ao mesmo tempo fechar o antigo?
Se sim. isso pode ser feito eu um único sub? por exemplo

Exit sub1
Cali sub1

Re: Como abrir um novo "Sub" e fechar o antigo

Enviado: Dom Abr 05, 2020 1:17 pm
por webmaster
Claudia,

Acho que temos um problema de entendimento aqui.

O Call faz uma chamada a uma outra função (Sub ou Function) e quando isso é feito, o contexto de execução muda para esta até que termine ou seja interrompida por um Exit Sub.

Veja se o diagrama abaixo ajuda no entendimento:
VBA Sequence Diagram.png
VBA Sequence Diagram.png (33.4 KiB) Exibido 3122 vezes

Re: Como abrir um novo "Sub" e fechar o antigo

Enviado: Seg Abr 06, 2020 1:54 pm
por Claudia souza
Entendi.
Resolvi criando outro Sub que eu vou usar pra chamar o Sub anterior assim:

Sub Macro1()
MsgBox "Hello world!"
End Sub

Sub Macro2()
Call Macro1
End Sub