Como depurar uma macro VBA do Excel que não está funcionando. Existem ferramentas incríveis no Excel VBA que permitem que você veja o valor atual armazenado nas variáveis conforme você avança no código, uma linha por vez. Se você tiver uma macro que não está funcionando,
Assistir vídeo
- Você tem uma macro VBA do Excel que não está funcionando
- O VBA tem ferramentas de depuração incríveis
- Em vez de executar seu código, você pode percorrer o código usando F8
- A linha em amarelo é a linha que está prestes a ser executada
- Passe o mouse sobre qualquer variável para ver o valor dessa variável.
- Alterne para frente e para trás no Excel para ver o que está acontecendo
Transcrição de vídeo
Aprenda Excel com o Podcast, Episódio 2096: Depuração de Macro VBA
Ei, bem-vindo de volta ao netcast, sou Bill Jelen. Pergunta de hoje: Alguém tinha um código que postei em um vídeo antigo do YouTube e postou um comentário dizendo: “Ah, isso não está funcionando. Não salva a fatura duplicada, mas não gera um erro. ” Não sei o que há de errado com o código. Tudo bem, você sabe, olhe, há ótimas ferramentas disponíveis quando o VBA Macro não está funcionando. Portanto, temos um botão aqui que deve executar algum código. Vou atribuir a macro, ela se chama SaveInvoice. Vou clicar em Editar e estamos no VBA. E normalmente, quando pressionamos esse botão, ele apenas executa este código. BAM! Como se tudo tivesse acontecido muito rápido, mas você não pode assistir o que está acontecendo.
Então, nas ferramentas de depuração, uma das minhas coisas favoritas aqui é Debug Step Into, que você verá que a tecla de atalho é F8, e que nos permite executar o código uma linha por vez. Então pressionei F8 aqui e esta é - a linha em amarelo é a linha que está prestes a ser executada. Então, se eu pressionar F8, ele pula essas duas declarações e agora estamos prestes a fazer uma ActiveSheet.Copy. O que é realmente bonito aqui é, você sabe, especialmente se você tem um monitor grande, a janela do Podcast é muito pequena, mas o que você pode fazer é assistir a execução do Macro. Então, agora está prestes a fazer ActiveSheet.Copy. No momento, estou em uma pasta de trabalho chamada Podcast 2096. Aqui está uma planilha chamada Fatura e quando pressiono F8, você verá que agora estou em uma pasta de trabalho totalmente nova chamada Livro2 e temos apenas a Fatura, certo.
E agora estamos prestes a atribuir essa coisa grande e longa ao Novo FN. Pressione F8. Tudo bem agora, não parece que nada aconteceu aqui porque nada aconteceu aqui. Mas aqui está a coisa bonita, agora atribuí algo a essa variável chamada Novo FN e se eu pegar meu mouse e passar o mouse sobre Novo FN, uma pequena dica de ferramenta aparecerá que mostra o que está armazenado no Novo FN. Então, ele está salvando o nome do arquivo, é a pasta para onde ele irá. É chamado de Invoice1234 porque tirou o valor de F4 e adicionou PDF.
Muito bem, uma das coisas mais frustrantes sobre o Excel é que, se a sua memória começar a ficar fraca, esta dica de ferramenta não quer mais aparecer. Você pairará lá e nada acontecerá. Às vezes você tem que clicar para fazer isso aqui e às vezes simplesmente não aparece. Quando não vai aparecer, o que podemos fazer é Ctrl + G. Ctrl + G é a janela imediata e então vamos usar? que é o atalho para Debug.Print, NewFN. Em outras palavras, diga-me o que há no Novo FN e ele mostrará o que há no Novo FN ali.
Tudo bem, agora estamos prestes a executar esta linha de código que criará um PDF. Tudo bem, então pressionarei F8. Tudo bem, e neste ponto devemos ter um novo PDF disponível com 1234 e se eu for olhar a pasta, com certeza Inv1234 em 11 de maio às 6h25 acaba de ser criado. Incrível, certo?
Tudo bem, agora estamos chegando ao ponto em que estamos tendo o problema. Tudo bem, então pressionamos F8 aqui e ele aparece como cópia duplicada. Tudo bem, funcionou. E então F8, e podemos ver o que há no Novo FN. Tudo bem, então ele tem DupInv1234.pdf e você pode até voltar aqui e apenas clicar depois de Imprimir NewFN e então você verá que mudamos o nome do arquivo, certo. Então está tudo bem. E então pressionamos F8 para executar Criando o PDF. Impressionante! Tudo parece ótimo, certo?
Então, volte aos nossos arquivos de Podcast. Tudo bem, mas em vez de ter algo chamado DupInv1234, eu simplesmente não sei como algo chamado Book2. Tudo bem, foi criado há apenas um minuto. Este tem que ser o único, mas caramba! Parece ser o nome errado. Tudo bem, então voltamos ao VBA e eu sei que acabei de atribuir o valor certo para New FN assim, certo. E vamos ver como estamos salvando. Estamos salvando como um NewFN1 que está vazio; e, como está vazio, significa que está usando o nome do arquivo que, neste caso, é Book2, pois fiz uma cópia dele. E mudou - Oh, olhe! Então aqui, eu estava atribuindo o nome a NewFN e salvando este NewFN1, e agora porque estou depurando e pairando - pairar é a melhor coisa de todos os tempos. Espero ser capaz de descobrir o que está acontecendo.Então eu volto e troco o NewFN1. Agora, aqui está a coisa incrível. Tudo bem, então já passei essa linha em Macro, mas posso arrastar isso de volta e dizer, tudo bem, vamos executar novamente F8. E agora vamos criar o PDF. Tudo bem, aí aparece com o nome certo e está tudo bem.
Tudo bem, agora que sei que terminei, está tudo ótimo. Tudo vai funcionar a partir daqui. Eu apenas clico em Executar e ele será executado no final do código. Certo, às vezes você terá uma Macro longa com, você sabe, centenas de linhas de código que estão funcionando e depois uma parte específica que não está funcionando, certo? Então, algumas outras ferramentas foram mencionadas aqui. Se você precisar pular um monte de código e executar tudo até aquele ponto, bem, uma maneira de fazer isso é clicar aqui e criar um Breakpoint. Tudo bem, então agora quando eu executar isso, ele irá mostrar tudo até aquele ponto. Posso apenas clicar em executar e ele irá parar, ou se você não quiser nem definir um ponto de interrupção, vamos apenas clicar aqui e dizer Debug, Run To Cursor. Executar para o Cursor.Agora eu sei que isso vai causar um problema aqui porque o código para alterar esse número da nota fiscal, ainda não conectei. Vou inserir um novo número de fatura e estou nessa linha agora. Depurar, Executar para o Cursor que é Ctrl + F8. Tudo bem, agora tudo correu até esse ponto e o que devemos ter é que devemos ser capazes de ver que ele acabou de criar o Inv1235, certo. E agora é sobre - estamos nesta linha de código. Posso apenas pressionar F8 para executar uma linha ou apenas executar o resto do caminho. E aí está o nosso DupInv1235, certo? Portanto, as ferramentas de depuração aqui no VBA são fantásticas. Vamos executar um código uma linha de cada vez, organizar sua tela para que possamos ver o código que está sendo executado e os resultados do código à esquerda. E você sabe, com sorte, você pode descobrir o que está errado com o código.
Tudo bem, recapitulando o episódio: tem uma macro VBA do Excel que não está funcionando. Possui incríveis ferramentas de depuração. Em vez de executar seu código, você pode percorrer o código usando F8. A linha em amarelo é a linha que está prestes a ser executada. Você pode passar o mouse sobre a variável para ver o valor dessa variável, alternar para frente e para trás no Excel para ver o que está acontecendo.
Bem, ei, quero agradecer por você passar por aqui. Nos vemos na próxima vez para outro netcast de.
⇬ Fazer download do arquivo
Baixe o arquivo de amostra aqui: Podcast2096.xlsm