Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Introdução ao Debug.Print e MsgBox | Introdução ao VBA e ao Modelo de Objetos do Excel
VBA do Excel para Automação Empresarial

Introdução ao Debug.Print e MsgBox

Deslize para mostrar o menu

Ambos permitem visualizar um valor enquanto o código é executado, mas são destinados a públicos diferentes, e confundi-los é um hábito comum no início que vale a pena corrigir conscientemente.

Debug.Print

Debug.Print [outputlist]
  • outputlist — uma ou mais expressões para exibir, opcionalmente unidas por ; ou &;
  • Sem parênteses, sem valor de retorno — é uma instrução, não uma função;
  • Sempre escreve na Janela Imediata.
Debug.Print total            ' one value
Debug.Print "Total: "; total ' semicolon — adds a space between items
Debug.Print "Total: " & total' & — concatenates with no extra space

MsgBox

MsgBox(prompt, [buttons], [title], [helpfile], [context])
MsgBox "Done."                                        ' statement form — no parentheses needed
result = MsgBox("Continue?", vbYesNo, "Confirm")       ' function form — parentheses required
Note
Nota

Parênteses nos argumentos do MsgBox só são usados quando você está capturando um valor de retorno. Quando usado como uma instrução simples (sem atribuição), os parênteses são, na verdade, um erro — MsgBox("Done.") ainda executa, mas se você adicionar um segundo argumento sem atribuição, MsgBox ("Continue?", vbYesNo) gera um erro de sintaxe. Remova os parênteses na forma de instrução e adicione-os apenas ao escrever result = MsgBox(...).

Para que serve cada um deles

Um teste simples: pergunte para quem a mensagem realmente se destina. Se a resposta for "para mim, enquanto estou escrevendo e testando este código", utilize Debug.Print — não custa nada deixar temporariamente e nada para remover depois, já que nunca aparece para quem usa a planilha finalizada. Se a resposta for "para a pessoa que está executando esta macro, agora, que precisa ver isso", utilize MsgBox — um prompt de confirmação ou uma mensagem de "concluído" se enquadram nessa categoria, pois fazem parte da experiência final e não apenas de uma ferramenta de depuração.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Introdução ao Debug.Print e MsgBox

Ambos permitem visualizar um valor enquanto o código é executado, mas são destinados a públicos diferentes, e confundi-los é um hábito comum no início que vale a pena corrigir conscientemente.

Debug.Print

Debug.Print [outputlist]
  • outputlist — uma ou mais expressões para exibir, opcionalmente unidas por ; ou &;
  • Sem parênteses, sem valor de retorno — é uma instrução, não uma função;
  • Sempre escreve na Janela Imediata.
Debug.Print total            ' one value
Debug.Print "Total: "; total ' semicolon — adds a space between items
Debug.Print "Total: " & total' & — concatenates with no extra space

MsgBox

MsgBox(prompt, [buttons], [title], [helpfile], [context])
MsgBox "Done."                                        ' statement form — no parentheses needed
result = MsgBox("Continue?", vbYesNo, "Confirm")       ' function form — parentheses required
Note
Nota

Parênteses nos argumentos do MsgBox só são usados quando você está capturando um valor de retorno. Quando usado como uma instrução simples (sem atribuição), os parênteses são, na verdade, um erro — MsgBox("Done.") ainda executa, mas se você adicionar um segundo argumento sem atribuição, MsgBox ("Continue?", vbYesNo) gera um erro de sintaxe. Remova os parênteses na forma de instrução e adicione-os apenas ao escrever result = MsgBox(...).

Para que serve cada um deles

Um teste simples: pergunte para quem a mensagem realmente se destina. Se a resposta for "para mim, enquanto estou escrevendo e testando este código", utilize Debug.Print — não custa nada deixar temporariamente e nada para remover depois, já que nunca aparece para quem usa a planilha finalizada. Se a resposta for "para a pessoa que está executando esta macro, agora, que precisa ver isso", utilize MsgBox — um prompt de confirmação ou uma mensagem de "concluído" se enquadram nessa categoria, pois fazem parte da experiência final e não apenas de uma ferramenta de depuração.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5
some-alt