MsgBox VBA e InputBox para Interagir com o Usuário

Você já deve ter ouvido falar em msgbox no VBA, mas você sabe como criar essas caixas de diálogo no Excel? Vem que eu te mostro!

MsgBox é a função do VBA que exibe uma caixa de mensagem (pop-up) no Excel para informar ou perguntar algo ao usuário. A sintaxe básica é MsgBox(texto, botões, título). Com botões como vbYesNo, ela retorna a escolha feita — 6 para Sim e 7 para Não —, permitindo executar ações diferentes conforme a resposta.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Nessa aula eu quero te mostrar como funciona a MsgBox (caixa de diálogo/caixa de mensagem) no VBA.

Só que além disso, vou te mostrar também como você pode utilizar essa MsgBox juntamente com a InputBox para deixar o seu trabalho ainda mais completo!

A MsgBox VBA é uma caixa de diálogo, e você pode criar uma caixa de mensagem personalizada.

Para fazer isso, vamos usar as opções do msgbox no VBA para que o usuário possa escolher “sim” ou “não”, por exemplo. De acordo com a resposta, podemos fazer diferentes ações.

Bora lá aprender sobre as caixas de diálogo no Excel?

No início da aula de hoje, nós temos uma tabela com datas e vendas registradas por uma empresa fictícia, que tomaremos como objeto de estudo.

Além disso, temos a quantidade monetária de vendas feitas em cada data, e os respectivos vendedores responsáveis pelas vendas. Acompanhe:

Msgbox VBA

O objetivo da aula de hoje é calcular, com automação de repetição (e eficiência), se um dia merece receber bônus referente a vendas ou não.

O que vai orientar o bônus é: se o dia tiver vendas superiores a 5000 reais, terá 10% de bônus em relação ao total vendido (para aquele dia).

Para isso, desenvolvemos o código abaixo:

VBA
<strong>Sub bonificacao()</strong><br><br><strong>For linha = 2 To 17</strong><br><br><strong>    If Cells(linha, 3).Value > 5000 Then</strong><br><br><strong>        resposta = MsgBox("A bonificação do vendedor " & _</strong><br><strong>        Cells(linha, 2).Value & " foi de R$" & Cells(linha, 3).Value * 0.1 & _</strong><br><strong>        ". Você quer preencher essa informação na planilha?", vbYesNo, "Pergunta de Bonificação")</strong><br><br><strong>        If resposta = 6 Then</strong><br><strong>           Cells(linha, 4).Value = Cells(linha, 3).Value * 0.1</strong><br><strong>        End If</strong><br><br><strong>    End If</strong><br><br><strong>Next</strong><strong> </strong><br><br><strong>End Sub</strong>

Explicação do código acima:

Como mostramos num dos posts anteriormente com um exemplo parecido, vamos iniciar uma estrutura de repetição do tipo For, que vai realizar ações repetitivas.

Nesse caso, ela vai realizar ações a partir da variável auxiliar “linha”, que vai do valor 2 até o valor 17.

A cada “volta” da nossa estrutura de repetição, o valor da variável auxiliar “linha” é acrescentado de 1 unidade. Assim configuramos a estrutura para iniciar e acabar em momentos desejados.

As ações a serem repetidas são:

  • Comparar se o valor da 3ª coluna (coluna C), a cada linha representada pela variável “linha” é maior do que 5000. Caso seja:
    • Armazenar na variável “resposta” o que vier de resposta do usuário para a caixa de mensagens no VBA (MsgBox VBA), que vai mostrar o texto, que contém:
      • o nome do vendedor, que está na 2ª coluna (coluna B) naquela “linha”
      • a bonificação que está na 3ª coluna (coluna C), naquela “linha”
    • A caixa de mensagem no VBA vai dispor de dois botões: “sim” e “não”. A resposta para o botão selecionado “sim” é entendida como o número 6; já para a resposta “não” é entendida como o número 7, por padrão do VBA.
    • Uma pergunta vai ser disposta para o usuário perguntando se ele quer preencher a informação de bonificação na planilha
  • Caso a resposta do usuário seja pela opção “sim” (se traduz em armazenar na variável “resposta” o valor 6):
    • A célula da 4ª coluna (coluna D) a cada “linha” vai receber o valor que está na mesma “linha”, mas na 3ª coluna (coluna C), multiplicado por 10% (0,10)
  • Seguirá fazendo as mesmas comparações e ações para todas as linhas, até a linha 17, quando a estrutura For acabará, e o código seguirá
  • Se encerra o código

Observe as duas primeiras caixas de mensagem geradas pelo nosso código e o efeito do clique na opção “Sim” em uma delas:

Msgbox no VBA

Fazendo todas as ações explicadas acima, e clicando “Sim” para todas as caixas de mensagem, teremos o seguinte resultado:

Msgbox VBA

MsgBox e InputBox no VBA

Nessa parte eu vou te mostrar como você pode utilizar a MsgBox que acabou de aprender em conjunto com a InputBox, que é uma caixa onde o usuário vai inserir uma informação de forma manual.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

O que você aprende neste vídeo

Resposta rápida: MsgBox exibe um popup com uma mensagem; InputBox exibe um popup que recebe um valor de volta. No exemplo, o InputBox pergunta o estoque atual, grava a resposta em Range("C3") e chama a macro que compara com o estoque mínimo, se for maior ou igual, MsgBox diz “estoque suficiente”; senão, o Else dispara o alerta.

Neste vídeo (19 min):

  • 2:00 - O botão sai de Inserir → Ilustrações → Formas: um retângulo comum vira botão em Formato da Forma → Efeitos.
  • 3:00 - Atalho de acabamento: em Predefinição o Excel já entrega sombra, reflexo e brilho prontos.
  • 4:00 - Botão direito no retângulo → Atribuir macro liga o código ao clique.
  • 6:00 - O ambiente do VBA abre por Exibir → Macros → Exibir macros → Editar.
  • 7:00 - A macro usa If ... Else ... End If, uma das duas grandes estruturas do VBA (a outra é a de repetição).
  • 8:00 - Todo código começa com Sub nome() e termina com End Sub.
  • 8:20 - O If é o equivalente da função SE do Excel, if em inglês é “se”.
  • 9:00 - Para se referir a uma célula: Range("C3"), com aspas; um intervalo é Range("C3:C10").
  • 9:30 - Alternativa: Cells(linha, coluna), a célula A1 é Cells(1, 1), e C3 é Cells(3, 3).
  • 11:00 - Detalhe que muda o resultado: com >, estoque igual ao mínimo cai no alerta; com >=, passa como suficiente.
  • 13:00 - Quando a condição é falsa o código pula para o Else, com o MsgBox de aviso.
  • 14:00 - Na segunda macro: Range("C3") = InputBox("Qual é o estoque atual?"), o = no VBA significa “recebe”.
  • 15:00 - Depois vem Call mensagem, que executa a outra macro, é como reaproveitar código já escrito.
  • 16:00 - F8 depura linha a linha, pintando de amarelo a instrução atual: é a melhor forma de ver o fluxo entrando no If ou no Else.

Para baixar a planilha utilizada nessa aula clique aqui!

O que é uma MsgBox VBA?

Essas são ferramentas do VBA (do inglês Visual Basic for Application) que é linguagem de programação por trás do Excel, ou seja, além de tudo que já temos dentro do ambiente Excel é possível escrever códigos e utilizar diferentes ferramentas para incrementar ainda mais a utilização desse Software no dia a dia. O MsgBox VBA é uma caixa de mensagem que aparece no Excel como uma caixa informativa, como por exemplo quando temos um erro ou algo do gênero aparecem esse tipo de pop up para dar um aviso. Já o InputBox é uma caixa um pouco diferente, pois permite ao usuário inserir um dado dentro dela.

Ícone VBAVBA Impressionador

Como automatizar praticamente qualquer tarefa repetitiva que você faça dentro do Excel. Aprenda a criar integrações do Excel com o PowerPoint, Word, Outlook e muito mais. Aprenda a criar automações para resolver tudo com apenas um clique em um botão. Tudo isso com uma única linguagem que junta todos esses programas.

Começar agoraSeta para a direita
Fundo VBATelas VBA

Quando utilizar a MsgBox VBA e o InputBox?

Vamos utilizar o MsgBox VBA quando for necessário mostrar uma mensagem ao usuário, seja ela qual for podendo essa mensagem conter um aviso, um número ou informações. Neste caso vamos utilizar o MsgBox para informar ao usuário uma condição de estoque de um determinado produto.

A função InputBox será utilizada para que o Excel nos mostre uma janela para inserir o valor do estoque atual, em seguida esse valor será atribuído a uma célula para que possamos novamente fazer a comparação entre o estoque atual e estoque mínimo.

Como utilizar essas ferramentas do VBA?

O primeiro passo que vamos fazer é criar uma espécie de botão para atribuirmos a macro (que é o código gerado em VBA) para facilitar a execução desse código, fazendo com que o usuário não tenha que acessar uma guia específica e escolher qual macro deseja executar.

Para a criação do botão vamos até a guia Inserir e vamos inserir o formato de um retângulo no ambiente Excel. (O usuário pode escolher qualquer uma das formas para a criação do botão).

Selecionando a forma de retângulo para a criação do botão
Selecionando a forma de retângulo para a criação do botão

Ao clicar na opção basta depois clicar e arrastar dentro de algum ponto dentro do Excel para criar a forma do tamanho desejado.

Retângulo criado
Retângulo criado

Feito isso a forma ficará selecionada e o usuário poderá ver que uma nova guia foi “criada”, que é a guia Formatar. Nesta guia podemos alterar a formatação deste “botão” para que fique mais apresentável.

Modificando os efeitos de forma do botão
Modificando os efeitos de forma do botão

Na parte de Efeitos de Forma vamos selecionar em Predefinição a segunda opção. Lembrando que o usuário poderá formatar da maneira que achar mais adequada. É possível também alterar a cor deste botão na opção Preenchimento da Forma. Feito isso teremos o seguinte resultado.

Botão com efeitos e posicionado ao lado da tabela
Botão com efeitos e posicionado ao lado da tabela

Temos a tabela onde faremos a comparação entre Estoque Atual e Estoque Mínimo e ao lado é possível observar o botão formatado. Agora para o próximo passo vamos atribuir uma macro a esse botão, para isso basta clicar com o botão direito do mouse em cima do botão e selecionar a opção Atribuir macro.

Selecionando a opção para atribuir a macro ao botão
Selecionando a opção para atribuir a macro ao botão

Feito isso o Excel irá abrir uma janela de atribuição de macros, como já temos o código nesse arquivo de Excel vamos apenas selecionar a macro mensagem e confirmar clicando em OK.

Selecionando a macro a ser atribuída
Selecionando a macro a ser atribuída

Feito isso a macro está atribuída ao botão, isso quer dizer que toda vez que clicarmos nesse botão de agora em diante esse código que foi associado será executado. Esse código vai fazer uma comparação entre a célula C3 e D3, então sempre que o estoque atual for maior do que o estoque mínimo teremos uma caixa de mensagem dizendo que o estoque está suficiente, caso contrário teremos uma mensagem dizendo que o estoque está insuficiente.

Vamos agora colocar dois valores distintos, um maior e um menor e vamos clicar no botão para verificar o resultado de cada um dos números comparados.

Testando a macro com um valor menor
Testando a macro com um valor menor
Testando a macro de MsgBox VBA com um valor maior
Testando a macro de MsgBox VBA com um valor maior

Após verificar que a macro está funcionando vamos analisar o código escrito para a execução dessa ação, para isso basta ir até a guia Exibir, selecionar a opção Macros e em seguida Exibir Macros.

Menu para acessar as macros criadas
Menu para acessar as macros criadas

Ao selecionar essa opção teremos a mesma janela que vimos para atribuir a macro ao botão, nesta parte a macro mensagem será selecionada e em seguida vamos selecionar a opção Editar.

Selecionando a macro com MsgBox VBA para editá-la
Selecionando a macro com MsgBox VBA para editá-la

Ao pressionar a opção Editar o ambiente VBA será aberto com o código escrito referente a essa macro mensagem que foi selecionada.

Abertura do ambiente com MsgBox VBA
Abertura do ambiente com MsgBox VBA

Como temos dois códigos no nosso programa os dois estão aparecendo, no entanto vamos analisar neste momento somente o primeiro deles.

VBA
Sub mensagem()



If Range("C3") > Range("D3") Then

	msgbox ("Estoque suficiente!")

Else

	msgbox ("CUIDADO! Estoque insuficiente!")

End If



End Sub

Sempre que vamos começar um código no VBA escrevemos Sub seguido do nome da macro e no final temos o End Sub para indicar o término do código. Na primeira linha do código temos a função If que seria a função SE (tradução), ou seja, vamos fazer uma comparação. Essa comparação está sendo feita entre o Range C3 e o Range D3, que são exatamente as células C3 e D3, então estamos verificando se a célula C3 é maior do que a célula D3. Ao final da linha temos a escrita Then que significa então, isso quer dizer que se essa comparação for verdadeira iremos executar o que está escrito na linha abaixo.

Na linha abaixo que está dentro da função If temos a função MsgBox VBA que é exatamente a nossa caixa de mensagem que aparece dentro do ambiente Excel quando a macro é executada. É possível observar que dentro dos parênteses se encontra o texto que será exibido nessa caixa, lembrando que como é um texto deve ser colocado entre aspas duplas.

Abaixo dessa linha de código temos a função Else, que funciona como um complemento da função If, ou seja, vamos ter uma leitura dessa forma: “se C3 for maior do que D3 faça isso, se não faça aquilo”. Neste caso o Else significa o se não, ou seja, se aquela comparação não for verdadeira vamos para o segundo caso, que é se ela for falsa, que é exatamente o que se encontra na função Else.

Abaixo da função Else temos o código que será executado caso entre dentro dessa função (considerando a primeira comparação como falsa). Esse código é novamente utilizando a função MsgBox, no entanto com uma mensagem diferente da primeira, pois neste caso como a comparação foi falsa isso significa que o dado da célula C3 é menor do que o da célula D3, isso quer dizer que o estoque atual se encontra menor do que o estoque mínimo.

Por fim temos a função End If que serve para indicar ao código que a função If termina naquele ponto e não teremos mais nada dentro dela, isso quer dizer que o código continua após a finalização da função.

Agora vamos analisar o segundo caso que é com a utilização da função InputBox.

Tabela para utilização da macro estoque com MsgBox VBA
Tabela para utilização da macro estoque com MsgBox VBA

Neste caso vamos executar uma macro para que o Excel peça o valor a ser inserido na célula de estoque atual ao invés de escrevermos diretamente dentro dela. Neste caso vamos criar novamente um botão e atribuir a macro de estoque a esse botão, em seguida ao pressionar este botão teremos a caixa de inserção de dados que é o InputBox.

Janela da função InputBox com explicação do que deve ser preenchido
Janela da função InputBox com explicação do que deve ser preenchido

É possível verificar que temos um campo para inserir o dado da quantidade de estoque e ao pressionar OK esse valor será inserido na célula C3 e teremos a macro mensagem sendo executada automaticamente.

MsgBox VBA referente a comparação dos valores
MsgBox VBA referente a comparação dos valores

Isso quer dizer que ao inserir o valor já estamos executando a outra macro logo em seguida para fazer a comparação do estoque atual com o estoque mínimo. Vamos agora verificar a escrita do código para essa macro.

VBA
Sub estoque()

Range("C3") = InputBox("Qual é o estoque atual?")

Call mensagem

End Sub

Assim como na outra macro temos Sub para iniciar a macro seguido do nome, e para finalizá-la temos o End Sub no final do código. Na primeira linha temos que a célula C3 irá receber o valor (esse é o significado do = na fórmula) do InputBox que tem a seguinte mensagem “Qual é o estoque atual?”, ou seja, além de podermos solicitar um valor, temos a opção de colocar uma mensagem para que o usuário entenda o que está sendo pedido. Na segunda linha do código temos uma “chamada” para a outra macro que foi criada anteriormente, que é a macro para fazer a comparação do estoque atual com o estoque mínimo, para isso utilizamos a função Call seguido do nome da macro que será executada.

Perguntas frequentes

1. O que é a função MsgBox no VBA?

MsgBox é uma função do VBA que cria uma caixa de mensagem no Excel, aparecendo como um pop-up informativo. Ela é usada para exibir avisos, números ou informações ao usuário durante a execução de uma macro. O texto mostrado vai entre parênteses e aspas duplas, podendo incluir botões e um título personalizado.

2. Qual a diferença entre MsgBox e InputBox no VBA?

A MsgBox apenas exibe uma mensagem e pode oferecer botões para o usuário escolher, sem permitir digitação. Já a InputBox mostra uma caixa com um campo onde o usuário insere um valor manualmente, que pode ser atribuído a uma célula. Uma comunica; a outra coleta dados do usuário.

3. Como usar botões de Sim e Não na MsgBox?

Adicione a constante vbYesNo como argumento na MsgBox e guarde o retorno em uma variável: resposta = MsgBox(“Confirmar?”, vbYesNo). O VBA retorna 6 quando o usuário clica em Sim e 7 quando clica em Não. Com um teste If, você executa ações diferentes conforme a escolha.

4. Como usar a InputBox para preencher uma célula no Excel?

Atribua o retorno da InputBox a uma célula usando o Range. Por exemplo, Range(“C3”) = InputBox(“Qual é o estoque atual?”) mostra uma janela, recebe o valor digitado e o grava na célula C3. Em seguida, é possível chamar outra macro com Call para processar esse valor automaticamente.

Conclusão

Nessa aula eu te mostrei o que é o MsgBox VBA, como utilizá-lo e ainda mostrei como você pode combinar essa ferramenta com a ferramenta InputBox no VBA, que permite com que o usuário insira um valor ao rodar o código.

A caixa de mensagem vai mostrar uma mensagem para o usuário, que pode ser personalizada para facilitar a utilização do programa pelo usuário.

Além disso, você pode pedir para que esse usuário insira valores enquanto estiver rodando o código para fazer verificações e mostrar uma mensagem de retorno!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?