Excel VBA MsgBox (Message Box) - Tudo o que você precisa saber!

No Excel VBA, você pode usar a função MsgBox para exibir uma caixa de mensagem (conforme mostrado abaixo):

Um MsgBox nada mais é que uma caixa de diálogo que você pode usar para informar seus usuários, mostrando uma mensagem personalizada ou obter algumas entradas básicas (como Sim / Não ou OK / Cancelar).

Enquanto a caixa de diálogo MsgBox é exibida, seu código VBA é interrompido. Você precisa clicar em qualquer um dos botões no MsgBox para executar o código VBA restante.

Observação: neste tutorial, usarei as palavras caixa de mensagem e MsgBox alternadamente. Ao trabalhar com Excel VBA, você sempre precisa usar MsgBox.

Anatomia de um MsgBox VBA no Excel

Uma caixa de mensagem contém as seguintes partes:

  1. Título: Isso é normalmente usado para mostrar do que se trata a caixa de mensagem. Se você não especificar nada, ele exibe o nome do aplicativo - que é Microsoft Excel neste caso.
  2. Incitar: Esta é a mensagem que você deseja exibir. Você pode usar este espaço para escrever algumas linhas ou até mesmo exibir tabelas / dados aqui.
  3. Botão (s): Embora OK seja o botão padrão, você pode personalizá-lo para mostrar botões como Sim / Não, Sim / Não / Cancelar, Repetir / Ignorar, etc.
  4. Ícone Fechar: Você pode fechar a caixa de mensagem clicando no ícone Fechar.

Sintaxe da função VBA MsgBox

Como mencionei, MsgBox é uma função e tem uma sintaxe semelhante a outras funções VBA.

MsgBox (prompt [, botões] [, título] [, arquivo de ajuda, contexto])

  • incitar - Este é um argumento obrigatório. Ele exibe a mensagem que você vê na MsgBox. Em nosso exemplo, o texto “Este é um exemplo de MsgBox” é o 'prompt'. Você pode usar até 1024 caracteres no prompt e também pode usá-lo para exibir os valores das variáveis. Caso queira mostrar um prompt com várias linhas, você também pode fazer isso (mais sobre isso posteriormente neste tutorial).
  • [botões] - Determina quais botões e ícones são exibidos no MsgBox. Por exemplo, se eu usar vbOkOnly, ele mostrará apenas o botão OK, e se eu usar vbOKCancel, ele mostrará os botões OK e Cancelar. Abordarei diferentes tipos de botões posteriormente neste tutorial.
  • [título] - Aqui você pode especificar qual legenda deseja na caixa de diálogo da mensagem. Isso é exibido na barra de título do MsgBox. Se você não especificar nada, ele mostrará o nome do aplicativo.
  • [arquivo de ajuda] - Você pode especificar um arquivo de ajuda que pode ser acessado quando um usuário clica no botão Ajuda. O botão de ajuda aparecerá apenas quando você usar o código do botão para ele. Se você estiver usando um arquivo de ajuda, também precisará especificar o argumento de contexto.
  • [contexto] - É uma expressão numérica que é o número do contexto da Ajuda atribuído ao tópico da Ajuda apropriado.

Se você é novo no conceito de Msgbox, sinta-se à vontade para ignorar os argumentos [arquivo de ajuda] e [contexto]. Raramente tenho visto isso sendo usado.

Observação: todos os argumentos entre colchetes são opcionais. Apenas o argumento 'prompt' é obrigatório.

Constantes de botão do Excel VBA MsgBox (exemplos)

Nesta seção, abordarei os diferentes tipos de botões que você pode usar com um MsgBox do VBA.

Antes de mostrar o código VBA para ele e a aparência do MsgBox, aqui está uma tabela que lista todas as diferentes constantes de botão que você pode usar.

Constante de Botão Descrição
vbOKOnly Mostra apenas o botão OK
vbOKCancel Mostra os botões OK e Cancelar
vbAbortRetryIgnore Mostra os botões Abortar, Repetir e Ignorar
vb Sim Não Mostra os botões Sim e Não
vbYesNoCancel Mostra os botões Sim, Não e Cancelar
vbRetryCancel Mostra os botões Repetir e Cancelar
vbMsgBoxHelpButton Mostra o botão Ajuda. Para que isso funcione, você precisa usar os argumentos de ajuda e de contexto na função MsgBox
vbDefaultButton1 Torna o primeiro botão padrão. Você pode alterar o número para alterar o botão padrão. Por exemplo, vbDefaultButton2 torna o segundo botão o padrão

Observação: ao passar pelos exemplos de criação de botões diferentes, você pode se perguntar qual é o sentido de ter esses botões se isso não tem nenhum impacto no código.

É verdade! Com base na seleção, você pode codificar o que deseja que o código faça. Por exemplo, se você selecionar OK, o código deve continuar e, se você clicar em Cancelar, o código deve parar. Isso pode ser feito usando variáveis ​​e atribuindo o valor da caixa de mensagem a uma variável. Abordaremos isso nas seções posteriores deste tutorial.

Agora vamos dar uma olhada em alguns exemplos de como os diferentes botões podem ser exibidos em um MsgBox e sua aparência.

Botões MsgBox - vbOKOnly (padrão)

Se você usar apenas o prompt e não especificar nenhum dos argumentos, receberá a caixa de mensagem padrão conforme mostrado abaixo:

Abaixo está o código que dará esta caixa de mensagem:

Sub DefaultMsgBox () MsgBox "Esta é uma caixa de amostra" End Sub

Observe que a string de texto precisa estar entre aspas duplas.

Você também pode usar a constante do botão vbOKOnly, mas mesmo se você não especificar nada, ela será considerada o padrão.

Botões MsgBox - OK e Cancelar

Se você deseja apenas mostrar o botão OK e Cancelar, você precisa usar a constante vbOKCancel.

Sub MsgBoxOKCancel () MsgBox "Quer continuar?", VbOKCancel End Sub

Botões MsgBox - Abortar, Tentar novamente e Ignorar

Você pode usar a constante ‘vbAbortRetryIgnore’ para mostrar os botões Abortar, Repetir e Ignorar.

Sub MsgBoxAbortRetryIgnore () MsgBox "O que você deseja fazer?", VbAbortRetryIgnore End Sub

Botões MsgBox - Sim e Não

Você pode usar a constante 'vbYesNo' para mostrar os botões Sim e Não.

Sub MsgBoxYesNo () MsgBox "Devemos parar?", VbYesNo End Sub

Botões MsgBox - Sim, Não e Cancelar

Você pode usar a constante ‘vbYesNoCancel’ para mostrar os botões Sim, Não e Cancelar.

Sub MsgBoxYesNoCancel () MsgBox "Devemos parar?", VbYesNoCancel End Sub

Botões MsgBox - Tentar novamente e cancelar

Você pode usar a constante ‘vbRetryCancel’ para mostrar os botões Repetir e Cancelar.

Sub MsgBoxRetryCancel () MsgBox "O que você deseja fazer a seguir?", VbRetryCancel End Sub

Botões MsgBox - Botão Ajuda

Você pode usar a constante ‘vbMsgBoxHelpButton’ para mostrar o botão de ajuda. Você pode usá-lo com outras constantes de botão.

Sub MsgBoxRetryHelp () MsgBox "O que você deseja fazer a seguir?", VbRetryCancel + vbMsgBoxHelpButton End Sub

Observe que, neste código, combinamos duas constantes de botão diferentes (vbRetryCancel + vbMsgBoxHelpButton) A primeira parte mostra os botões Repetir e Cancelar e a segunda parte mostra o botão Ajuda.

Botões MsgBox - Configurando um botão padrão

Você pode usar a constante ‘vbDefaultButton1’ para definir o primeiro botão como padrão. Isso significa que o botão já está selecionado e se você pressionar enter, o botão será executado.

Abaixo está o código que definirá o segundo botão (o botão ‘Não’) como o padrão.

Sub MsgBoxOKCancel () MsgBox "O que você deseja fazer a seguir?", VbYesNoCancel + vbDefaultButton2 End Sub

Na maioria dos casos, o botão mais à esquerda é o botão padrão. Você pode escolher outros botões usando vbDefaultButton2, vbDefaultButton3 e vbDefaultButton4.

Constantes do ícone do Excel VBA MsgBox (exemplos)

Além dos botões, você também pode personalizar os ícones que são exibidos na caixa de diálogo MsgBox. Por exemplo, você pode ter um ícone crítico vermelho ou um ícone de informação azul.

Abaixo está uma tabela que lista o código que mostrará o ícone correspondente.

Constante de ícone Descrição
vbCritical Mostra o ícone de mensagem crítica
vbQuestion Mostra o ícone da pergunta
vbExclamation Mostra o ícone da mensagem de aviso
vbInformation Mostra o ícone de informação

Ícones MsgBox - Crítico

Se você quiser mostrar um ícone crítico em seu MsgBox, use a constante vbCritical. Você pode usar isso junto com outras constantes de botão (colocando um sinal + entre os códigos).

Por exemplo, abaixo está um código que mostrará o botão OK padrão com um ícone crítico.

Sub MsgBoxCriticalIcon () MsgBox "Esta é uma caixa de amostra", vbCritical End Sub

Se você quiser mostrar o ícone crítico com os botões Sim e Não, use o seguinte código:

Sub MsgBoxCriticalIcon () MsgBox "Esta é uma caixa de amostra", vbYesNo + vbCritical End Sub

Ícones MsgBox - Pergunta

Se você quiser mostrar um ícone crítico em seu MsgBox, use a constante vbQuestion.

Sub MsgBoxQuestionIcon () MsgBox "Esta é uma caixa de amostra", vbYesNo + vbQuestion End Sub

Ícones MsgBox - Exclamação

Se você quiser mostrar um ícone de exclamação em sua MsgBox, use a constante vbExclamation.

Sub MsgBoxExclamationIcon () MsgBox "Esta é uma caixa de amostra", vbYesNo + vbExclamation End Sub

Ícones MsgBox - Informações

Se você quiser mostrar um ícone de informação em seu MsgBox, use a constante vbInformation.

Sub MsgBoxInformationIcon () MsgBox "Esta é uma caixa de amostra", vbYesNo + vbInformation End Sub

Personalização de título e prompt na caixa de mensagem

Ao usar MsgBox, você pode personalizar o título e as mensagens de prompt.

Até agora, o exemplo que vimos usou Microsoft Excel como título. Caso você não especifique o argumento do título, MsgBox usa automaticamente o título do aplicativo (que foi o Microsoft Excel neste caso).

Você pode personalizar o título especificando-o no código conforme mostrado abaixo:

Sub MsgBoxInformationIcon () MsgBox "Deseja continuar?", VbYesNo + vbQuestion, "Etapa 1 de 3" End Sub

Da mesma forma, você também pode personalizar a mensagem de prompt.

Você também pode adicionar quebras de linha na mensagem de prompt.

No código a seguir, adicionei uma quebra de linha usando ‘vbNewLine’.

Sub MsgBoxInformationIcon () MsgBox "Deseja continuar?" & vbNewLine & "Clique em Sim para continuar", vbYesNo + vbQuestion, "Etapa 1 de 3" End Sub

Você também pode usar o caractere de retorno de carro - Chr (13) - ou alimentação de linha - Chr (10) para inserir uma nova linha na mensagem de prompt.

Observe que você pode adicionar uma nova linha apenas à mensagem de prompt e não ao título.

Atribuindo Valor MsgBox a uma Variável

Até agora, vimos os exemplos em que criamos caixas de mensagens e personalizamos os botões, ícones, título e prompt.

No entanto, clicar em um botão não fez nada.

Com a função MsgBox no Excel, você pode decidir o que deseja fazer quando um usuário clica em um botão específico. E isso é possível porque cada botão tem um valor associado.

Portanto, se eu clicar no botão Sim, a função MsgBox retorna um valor (6 ou a constante vbSim) que posso usar em meu código. Da mesma forma, se o usuário selecionar o botão Não, ele retornará um valor diferente ((7 ou a constante vbNo)) que posso usar no código.

Abaixo está uma tabela que mostra os valores exatos e a constante retornada pela função MsgBox. Você não precisa memorizá-los, apenas esteja ciente disso e você poderá usar as constantes que são mais fáceis de usar.

Botão clicado Constante Valor
OK vbOk 1
Cancelar vbCancel 2
Abortar vbAbort 3
Tentar novamente vbRetry 4
Ignorar vbIgnore 5
sim vb Sim 6
Não vbNo 7

Agora vamos ver como podemos controlar o código de macro VBA com base em qual botão um usuário clica.

No código a seguir, se o usuário clicar em Sim, será exibida a mensagem “Você clicou em Sim” e, se o usuário clicar em Não, será exibida a mensagem “Você clicou em Não”.

Sub MsgBoxInformationIcon () Result = MsgBox ("Deseja continuar?", VbYesNo + vbQuestion) If Result = vbYes Then MsgBox "Você clicou em Sim" Ou: MsgBox "Você clicou em Não" End If End Sub

No código acima, atribuí o valor da função MsgBox à variável Result. Quando você clica no botão Sim, a variável Result obtém a constante vbYes (ou o número 6) e quando você clica em Não, a variável Result obtém a constante vbNo (ou o número 7).

Em seguida, usei uma construção If Then Else para verificar se a variável Result contém o valor vbYes. Em caso afirmativo, mostra o prompt “Você clicou em Sim”, caso contrário, mostra “Você clicou em Não”.

Você pode usar o mesmo conceito para executar um código se um usuário clicar em Sim e sair do sub quando clicar em Não.

Nota: Ao atribuir a saída MsgBox a uma variável, você precisa colocar os argumentos da função MsgBox entre parênteses. Por exemplo, na linha Result = MsgBox (“Deseja continuar?”, VbYesNo + vbQuestion), você pode ver que os argumentos estão entre parênteses.

Se você quiser se aprofundar na função Message Box, aqui está o documento oficial sobre ela.

Você também pode gostar dos seguintes tutoriais do Excel VBA:

  • Função de divisão do Excel VBA.
  • Função Excel VBA InStr.
  • Trabalhando com células e intervalos no Excel VBA.
  • Trabalhando com planilhas em VBA.
  • Trabalhando com pastas de trabalho em VBA.
  • Usando Loops no Excel VBA.
  • Compreendendo os tipos de dados do Excel VBA (variáveis ​​e constantes)
  • Como criar e usar a pasta de trabalho macro pessoal no Excel.
  • Exemplos úteis de código de macro do Excel.
  • Usando For Next Loop no Excel VBA.
  • Eventos do Excel VBA - um guia fácil (e completo).
  • Como executar uma macro no Excel - um guia passo a passo completo.
  • Como criar e usar um suplemento do Excel.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave