Ed, não encontrei nada que relacione com o término da macro, pode ser que alguém apareça com alguma informação extra.
Sobre o restante:
Essa parte de verdadeiro ou falso que eu apresentei, não seria para sair da sub, mas para executar ou não executar blocos dentro da sub. Como falei antes, essa é a recomendação do segundo link que vc postou. Quando se trabalha com grandes códigos, se vc segue testando o código, vc vai querer "pular alguns blocos no teu teste". O modo mais rápido que a maioria das pessoas faz é comentar as linhas do código. Quando se tem um bloco com até 10 linhas, ainda vai. Passando disso, fica realmente chato vc comentar/descomentar todas as linhas, 1 por 1. Ai é que entra a ideia de vc colocar todo o bloco dentro do If. Não é complicado, é questão de necessidade - eu também não gostava, mas teve momentos em que eu vi que essa era a melhor forma de pular blocos.
Além disso, se vc tentar usar vários formulários, não tem como controlar eventos usando "application.enableevents", então vc vai ter que usar a dica acima. Faça o teste pra vc ver.
Sobre colocar um exit sem ser necessário - creio que vc não entendeu. Eu não disse que alguém vai fazer isso. Eu disse que alguém vai COPIAR E COLAR. O mais normal em grandes programas é ter que usar os mesmos blocos, ou blocos quase identicos de programação. O que se faz é escrever um bloco, e depois copiar e colar para outras subs, e depois ajustar os detalhes, nesse ponto pode-se deixar um "exit" perdido.
Da mesma forma, imagine um código com milhares de linhas. Você passa meses programando tudo. De repente, dá um erro, ai vc tem que voltar e rever TUDO o que foi programado, e nisso pode ter passado um "exit" despercebido, ou, eventualmente, como todo programador, vc interrompeu o código para testar, e esqueceu de corrigir isso.
Da mesma forma, é problemático sim, acompanhar códigos, ainda mais hoje em dia. Em grandes programas, xistem vários programadores trabalhando ao mesmo tempo. Depois de tempo, chega-e à fase final, que basicamente se resume em corrigir erros. Se cada um ficar colocando interrupções e saltos (goto's), todo mundo vai enlouquecer. Ou seja, é preciso estabelecer um padrão.
Veja: mesmo em códigos pequenos, vc diz que é confuso seguir essas orientações. Eu, por outro lado, digo que é confuso encher de goto's e exit's. Se nós 2 tentássemos trabalhar juntos, não iria funcionar. Isso, como eu disse, em códigos pequenos. Agora imagine em códigos grandes. A solução seria uma só: mandar 1 de nós 2 embora e contratar outro, para que todos trabalhem da mesma forma.
Se, porém, vc quiser trabalhar sozinho e encher os teus códigos de goto's e exit's, fique à vontade.
Ah, outra coisa: sobre dividir macros. A estrutura de uma sub envolve blocos, como já disse. Essa é a subdivisão da sub. Se vc colocar um monte de gosub ou call macro, é a mesma coisa que colocar um monte de goto's. Eu entendo que dividir macros não é o caminho, mas sim, ter macros específicas. Quero dizer: não acho certo dividir uma macro só porque vc quer economizar linhas de programação. Para isso, crie um bloco e copie-cole onde precisar. Agora, para funções mais genéricas, vc deve ter uma macro em separado - por exemplo, uma macro para tratamento de erros ao final da sub, ou uma macro para limpar memória, uma para bloquear a planilha, e por ai vai.
PS: apenas a título de curiosidade: programar não se resume a dar instruções para se chegar a um resultado, mas a ter controle de tudo o que está acontecendo. Eu já li vários relatos de hackers que invadiram sistemas de segurança simplesmente porque atacaram uma variável.
Abraço
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Postado : 21/06/2015 9:50 am