Como sair de uma rotina recursiva pressionando CTRL+BREAK
Enviado: 18 Jan 2018 às 11:58
Olá,
Marquei meu outro tópico como respondido pois achava que tinha encontrado a solução para o meu problema, porém eu estava enganado. Abaixo o link, tem um arquivo de exemplo:
viewtopic.php?f=12&t=6060
O problema é que estou utilizando uma sub recursiva para pesquisar nas pastas do computador. Apenas a título de curiosidade, uma sub recursiva é uma rotina que chama a si mesma um determinado nº de vezes, também pode ser usada em funções.
A instrução
Application.EnableCancelKey = xlErrorHandler
envia para o procedimento em execução um erro interceptável com o código 18, daí utilizo
On Error GoTo Sair
para tratar o erro gerado após pressionar as teclas CTRL+BREAK . Na linha Sair apenas coloco um
Exit Sub
para abandonar a macro, mas como trata-se de uma rotina recursiva a sub voltar a chamar a si mesma e continua a pesquisa até percorrer todas as subpastas da pasta principal.
O que quero fazer é que ao pressionar CTRL+BREAK eu interrompa de alguma forma essa sub recursiva, parando assim a pesquisa, pois dessa forma se a macro estiver demorando muito para realizar a pesquisa, o usuário pode interromper a mesma a qualquer momento via teclado.
Se for possível percorrer todas as subpastas de um diretório sem utilizar a recursividade também resolve meu problema.
Agradeço muito se alguém puder me orientar como proceder.
Se precisarem de um arquivo de exemplo é só avisar.
Atenciosamente,
Anderson Leal
Marquei meu outro tópico como respondido pois achava que tinha encontrado a solução para o meu problema, porém eu estava enganado. Abaixo o link, tem um arquivo de exemplo:
viewtopic.php?f=12&t=6060
O problema é que estou utilizando uma sub recursiva para pesquisar nas pastas do computador. Apenas a título de curiosidade, uma sub recursiva é uma rotina que chama a si mesma um determinado nº de vezes, também pode ser usada em funções.
A instrução
Application.EnableCancelKey = xlErrorHandler
envia para o procedimento em execução um erro interceptável com o código 18, daí utilizo
On Error GoTo Sair
para tratar o erro gerado após pressionar as teclas CTRL+BREAK . Na linha Sair apenas coloco um
Exit Sub
para abandonar a macro, mas como trata-se de uma rotina recursiva a sub voltar a chamar a si mesma e continua a pesquisa até percorrer todas as subpastas da pasta principal.
O que quero fazer é que ao pressionar CTRL+BREAK eu interrompa de alguma forma essa sub recursiva, parando assim a pesquisa, pois dessa forma se a macro estiver demorando muito para realizar a pesquisa, o usuário pode interromper a mesma a qualquer momento via teclado.
Se for possível percorrer todas as subpastas de um diretório sem utilizar a recursividade também resolve meu problema.
Agradeço muito se alguém puder me orientar como proceder.
Se precisarem de um arquivo de exemplo é só avisar.
Atenciosamente,
Anderson Leal