Access
 sql >> Base de Dados >  >> RDS >> Access

Depurando Procedimentos Privados


Uma das vantagens do VBA ser uma linguagem interpretada é que podemos executar procedimentos individuais sem ter que compilar toda a aplicação. Vamos explorar exatamente como fazemos isso.

Procedimentos Públicos

Rotinas públicas sem argumentos


Em um módulo padrão, você pode colocar o cursor dentro de uma Rotina Pública que não possui argumentos, pressionar [F5], e essa rotina será executada imediatamente.

Se você quiser percorrer a rotina, você pode definir um ponto de interrupção em uma das linhas antes de pressionar [F5] ou simplesmente pressionar [F8] ("Passar em") e começar imediatamente a percorrer o código da rotina.

Funções públicas sem argumentos


Isso também funciona com funções públicas em módulos de código padrão. A chave é que a função não pode aceitar nenhum argumento, nem mesmo opcionais.

Procedimentos públicos com argumentos


O que acontece se você tentar executar um procedimento público que receba um ou mais argumentos (mesmo os opcionais)? O comando "Executar> Executar Macro" executa:

Procedimentos privados

Procedimentos privados sem argumentos


Eu não posso levar o crédito por descobrir este. Agradecimentos especiais vão para Terry Chapman por repassar o fato de que você pode pressionar F5 para depurar Privado procedimentos em vigor, não apenas procedimentos públicos.

Como Terry, eu costumava alterar temporariamente meus procedimentos Privados para Públicos enquanto os depurava. Acontece que eu nunca tive que fazer isso.

Procedimentos privados Com Argumentos


Uma vez que Terry me fez questionar minhas suposições, decidi ver o quanto eu poderia me safar. Muito mais do que eu esperava, acontece!

Acredite ou não, você pode depurar procedimentos privados que aceitam argumentos sem transformando-os temporariamente em procedimentos públicos. Para fazer isso, você só precisa chamar o nome do procedimento totalmente qualificado da janela imediata. Por "nome totalmente qualificado", quero dizer o nome no formato de {ModuleName}.{ProcedureName} .

Confira este exemplo:

Mas não acredite na minha palavra. Vá experimentar!