Notifications
Clear all

Pular 'For' no meio e retornar após

5 Posts
2 Usuários
0 Reactions
1,075 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fiz um "For" e no meio dele eu pulo para executar uma tarefa, e gostaria de voltar à continuação do "For".

Eu resolveria isso facilmente se eu separasse esse "Próximo Passo" eu outra macro, e chamasse no meio do "For" por Call, mas dentro dessa macro, eu já defini várias constantes e seria trabalhoso fazê-las novamente.

Como faço isso?

Exemplo:

Sub MACRO()

    Workbooks.Open Filename:="Arquivo.xlsx"

    For i = 1 To 25
        If aArq = "Arquivo.xlsx" Then GoTo PROXIMOPASSO
    Next

Exit Sub

PROXIMOPASSO:
    Range("O15").Select
    ActiveCell.Offset(0, 0).FormulaR1C1 = ""
Resume Next

End Sub
 
Postado : 26/07/2012 7:58 am
(@depoisteconto)
Posts: 183
Reputable Member
 

Não sei se entendi bem, mas caso o if seja verdadeiro deve haver um procedimento que você chama de PROXIMOPASSO.
Porque não executar esse PROXIMOPASSO dentro do for?

Dê mais detalhes.

At

 
Postado : 26/07/2012 9:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pq no exemplo, parece pequeno, mas na verdade são vários passos, com etapas grandes, e para uma melhor ornanização da macro, queria fazer dessa forma.

Sei que existe uma alternativa, só não sei fazer.

Em suma, se nenhum "If" for verdadeiro, a macro termina no "Exit Sub", porém qdo um "If" é verdadeiro, ele ai para o passo indicado, após o "Exit Sub" e termina no "Resume Next" (que nesse caso, não é esse comando, não deu certo).

Esse "PROXIMOPASSO:" que coloquei, abaixo dele, no "Resume Next" teria outros "PROXIMOPASSO2", "3", etc, que sempre começa e termina onde indico.

 
Postado : 26/07/2012 9:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pelo exemplo e argumento, não entendi muito bem mas creio que possa testar:

Sub MACRO()
    Workbooks.Open Filename:="Arquivo.xlsx"
    For i = 1 To 25
        If aArq = "Arquivo.xlsx" Then GoTo PROXIMOPASSO
Segue:   
 Next
Exit Sub

PROXIMOPASSO:
    Range("O15").Select
    ActiveCell.Offset(0, 0).FormulaR1C1 = ""
goto segue
End Sub
 
Postado : 26/07/2012 9:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Lógico, q burro, dá zero pra mim, rsrs... A mesma lógica que usei, é a que precisava pra voltar.

Obrigado Reinaldo!

 
Postado : 26/07/2012 10:32 am