Estados do VBE

Existem quatro estados de processamento do VBE em relação ao código VBA: eles se chamam Tempo de Desenvolvimento, Tempo de Compilação, Tempo de Execução e Tempo de Depuração. É comum usarmos a palavra modo no lugar de tempo, e nesse caso, seus significados são equivalentes.

Se não tem familiaridade com o VBE, veja a seção Visual Basic Editor (VBE).

Tempo de Desenvolvimento

Tempo de Desenvolvimento (ou Tempo de Design) é o estado quando estamos desenvolvendo o código e formulários de um programa. É quando criamos módulos, escrevemos procedimentos, criamos e redimensionamos os controles de um formulário, alteramos as propriedades dos objetos visíveis no Project Explorer, e assim por diante. Quando estamos nesse estado, o VBE pode até verificar se a sintaxe das linhas de código digitadas estão corretas, mas não as executa.

Veja, por exemplo, um formulário em tempo de desenvolvimento:

Tempo de Compilação

Os aplicativos Office não interpretam um código tal qual como enxergamos no VBE. O processamento de um código é algo extremamente complexo, sendo que em seu mais baixo nível é uma comutação de sinais binários (0 e 1).

Durante o tempo de compilação o VBE verifica se o código atende aos requisitos para ser executado. Se esse não for o caso, o VBE notifica o usuário através de uma caixa de mensagem informando o erro de compilação detectado. É também durante esse momento em que o VBE traduz o código VBA para uma linguagem de máquina que o computador consiga entender e executar os comandos. Na maioria das vezes, projetos são compilados quase que instantaneamente.

Você pode compilar todo código de um projeto sem executá-lo através da guia Depurar >> controle Compilar <nome do projeto>:

Abaixo, veja um exemplo de um erro identificado pelo VBE durante o tempo de compilação:

A sintaxe da instrução MsgBox está incorreta, interrompendo a compilação do código e retornando o VBE ao modo de desenvolvimento. O VBE verifica muitos outros requisitos para suceder a fase de compilação além de verificar a sintaxe.

É crítico que seu código compile antes de você distribuir seu projeto. É considerada uma prática abominável distribuir um código ou projeto que não utilize Option Explicit ou que não compile devido a erros (em breve, o link voltará a funcionar).

Tempo de Execução

O tempo de execução, como o próprio nome diz, é o estado em que o VBE está interpretando e executando o código VBA. Durante essa etapa, ocorre também parte da compilação do código. Essa compilação é demandada: são compilados os procedimentos e a sintaxe de código do módulo dos procedimentos que serão executados.

Existe uma sequência da ordem em que o código é compilado e executado: Suponha que temos um programa que executa os procedimentos Iniciar, Mostrar e depois Destruir. O VBE compila Iniciar para depois executá-lo, em seguida compila Mostrar para depois executá-lo e depois faz o mesmo com Destruir.

A consequência dessa sequência é que você pode ter um programa que durante sua execução seja interrompido por um erro de compilação. Portanto, quando finalizar um projeto, sugiro que o compile manualmente, como atentado no quadro anterior, porque é a única forma de compilar todo seu projeto e verificar se a sintaxe do mesmo está correta.

É durante o tempo de execução que o programador descobre a maioria dos erros. Veja um exemplo desse tipo de erro:

O código acima compila sem problemas porque não erro de sintaxe, mas durante a execução o VBA faz um cálculo que retorna um valor inválido ao VBE. A partir daí, o VBE interrompe a execução do código, mostra o número e a descrição do erro, e então o usuário escolhe o que fazer.

Como desenvolvedor, um dos seus papéis é prever os erros que podem acontecer durante o tempo de execução de um programa e tratá-los para o bom funcionamento do mesmo.

Interromper a Execução de um Programa

Se o seu programa estiver executando e você quiser interrompê-lo imediatamente, você pode pressionar o atalho Ctrl+Break. Se estiver num laptop, pode ser que seu teclado não tenha a tecla Break, normalmente em cima à direita em um teclado convencional.

Ao interromper um programa, você pode decidir o que fazer depois:

Pode continuar a execução do código, mantendo o modo de execução, pode encerrar a execução voltando ao modo de desenvolvimento ou pode depurar, entrando em modo de depuração, explicado na seção a seguir.

Pode acontecer de você entrar o comando Ctrl+Break e o VBA não reconhecer, mantendo a o programa em execução. Isso acontece normalmente quando você tem um laço infinito no código e o VBA segue a execução ocupando todo o processamento do Excel. Infelizmente, nesses casos você terá que encerrar o Excel à força e perderá seu trabalho que não foi salvo. Em breve, escreverei um artigo falando mais sobre esse assunto e como evitar esse problema.

Tempo de Depuração

O tempo de depuração é um estado intermediário entre o tempo de desenvolvimento e o tempo de execução. Ele não ocorre obrigatoriamente. É muito útil para fazer testes e estudos de um programa, e pode-se chegar nele quando:

  • A linha a ser executada pela rotina possui um ponto de interrupção (a tecla F9 habilita/desabilita uma linha como ponto de interrupção) ;
  • Depura-se um programa ao invés de executá-lo (exemplo: pressionar tecla F8 ao invés de F5);
  • Ocorre um erro de execução e na janela do erro o usuário clica em Depurar;
  • Encontra-se uma instrução do tipo Stop ou Debug.Assert.

Veja o exemplo de um programa que está sendo depurado:

O VBE indica ao usuário qual é a instrução que será executada colorindo-a de amarelo (cor padrão). Durante o tempo de depuração, você pode fazer algumas alterações iguais as que faz em tempo de Desenvolvimento, mas nem tudo é permitido. No exemplo acima, você pode mudar o valor 5 para outro, mas se tentar alterar o nome do procedimento Categoria, por exemplo, obterá a caixa de diálogo abaixo:

Na janela acima, se clicar em OK, você retornará ao tempo de desenvolvimento. A redefinição de um projeto é outro assunto que irei escrever a respeito em breve.

Dominar a depuração no VBE é essencial para o programador conseguir corrigir rapidamente os problemas do programa e fazer testes com eficiência e eficácia.

Por |2018-07-14T00:23:56+00:00julho 8th, 2018|VBA|0 Comentários

Sobre o Autor:

Felipe Costa Gualberto é Microsoft Most Valuable Professional (MVP) desde 2013 e é Diretor Técnico da MLF Soluções Tecnológicas e Educação Corporativa. Áreas de interesse: Power BI, Excel, VBA, Office Addins, Sql Server, .NET

Deixe um comentário