Sim Não Caixa de mensagem (Msgbox) - Exemplos de código VBA

Este tutorial cobrirá como usar a função VBA MsgBox para exibir caixas de mensagens aos usuários (incluindo a caixa de mensagens YesNo). Você também pode estar interessado em nosso artigo sobre InputBoxes.

Função VBA MsgBox

No VBA, é fácil exibir um MsgBox simples:

1 MsgBox "Esta é uma caixa de mensagem"

No entanto, você pode fazer muito mais do que exibir uma simples caixa de mensagem OK. Vejamos rapidamente um exemplo complicado antes de mergulharmos em detalhes …

Caixa de mensagem VBA Sim Não

A seguir, criaremos uma caixa de mensagem com:

  • Um título “Título da caixa de mensagem” e um prompt “Texto”
  • Um ícone de ponto de interrogação
  • Opções Sim / Não em vez de um simples “OK”
  • Botão padrão = ‘Não’
123 Dim answer As Integeranswer = MsgBox ("Texto", vbQuestion + vbYesNo + vbDefaultButton2, "Título da caixa de mensagem")

A caixa de mensagem retornará vbYes ou vbNo dependendo da escolha do usuário. Você pode então realizar diferentes ações com base na escolha:

12345 Se a resposta = vb Sim, entãoMsgBox "Sim"OutroMsgBox "Não"Fim se

Na próxima seção, mostraremos todas as opções disponíveis para você ao criar caixas de mensagens. Em seguida, apresentaremos a sintaxe da função MsgBox e, finalmente, examinaremos outros exemplos de caixa de mensagem.

Opções de caixa de mensagem VBA

Dê uma olhada na imagem abaixo. Aqui você verá (quase) todas as opções disponíveis para você ao criar caixas de mensagem. Observe os ícones e os diferentes botões.

Esta é uma captura de tela do “MessageBox Builder” de nosso suplemento VBA Premium: AutoMacro. O MessageBox Builder permite que você crie rapidamente sua caixa de mensagem desejada e insira o código em seu módulo de código. Ele também contém muitos outros criadores de código, uma extensa biblioteca de código VBA e uma variedade de ferramentas de codificação. É um must-have para qualquer desenvolvedor VBA.

Sintaxe da função MsgBox

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

prompt (obrigatório) - Este é o texto da caixa de mensagem principal.

botões - Escolha quais botões exibir. Se omitido, 'OK apenas'. Aqui você também pode especificar o ícone a ser mostrado e o botão padrão.

título - O título na parte superior da caixa de mensagem. Se omitido, o nome do aplicativo atual é exibido (ex. Microsoft Excel).

arquivo de ajuda - Especifique o arquivo de ajuda que pode ser acessado quando o usuário clica no botão ‘Ajuda’. Se especificado, você também deve adicionar contexto (abaixo)

contexto - Expressão numérica que representa o número do contexto da Ajuda atribuído ao tópico da Ajuda apropriado.

Você provavelmente pode ignorar o arquivo de ajuda e os argumentos de contexto. Eu nunca os vi usados.

Personalize o título e o prompt da caixa de mensagem

A função MsgBox permite que você personalize o título e as mensagens de prompt como:

1 Msgbox "Prompt" ,, "Title"

Outro exemplo:

123 Sub MsgBoxPromptTitle ()MsgBox "Etapa 1 concluída. Clique em OK para executar a etapa 2." ,, "Etapa 1 de 5"End Sub

Importante! Você deve se lembrar de cercar seu texto com citações.

MessageBox LineBreaks

Você também pode adicionar quebras de linha aos prompts da caixa de mensagem com ‘vbNewLine’.

123 Sub MsgBoxPromptTitle_NewLine ()MsgBox "Etapa 1 concluída." & vbNewLine & "Clique em OK para executar a etapa 2.", "Etapa 1 de 5"End Sub

Observe que usamos o símbolo & para juntar o texto. Você pode aprender mais sobre como usar & com texto e outras opções para inserir quebras de linha em nosso artigo sobre junção de texto.

Ícones MsgBox

O VBA oferece a capacidade de adicionar um dos quatro ícones predefinidos às suas caixas de mensagem:

Constante de ícone Ícone
vbInformation
vbCritical
vbQuestion
vbExclamation

A constante do ícone deve ser colocada dentro do argumento do botão:

123 Sub MsgBoxQuestionIcon ()MsgBox "Exemplo de pergunta", vbQuestionEnd Sub

Isso gerará a caixa de mensagem "OK" padrão com o ícone de pergunta:

Observe como, quando você digita, o Editor VBA mostra as opções disponíveis para você:

Isso é útil porque você não precisa se lembrar da sintaxe ou dos nomes exatos dos ícones ou botões.

Agora vamos demonstrar cada ícone da caixa de mensagem:

Ícones MsgBox - Informações

123 Sub MsgBoxInformationIcon ()MsgBox "Exemplo de informação", vbInformationEnd Sub

Ícones MsgBox - Crítico

123 Sub MsgBoxCriticalIcon ()MsgBox "Exemplo crítico", vbCriticalEnd Sub

Ícones MsgBox - Pergunta

123 Sub MsgBoxQuestionIcon ()MsgBox "Exemplo de pergunta", vbQuestionEnd Sub

Ícones MsgBox - Exclamação

123 Sub MsgBoxExclamationIcon ()MsgBox "Exemplo de exclamação", vbExclamationEnd Sub

A seguir, falaremos sobre como gerar caixas de mensagens com diferentes layouts de botões. Se você escolher um tipo de caixa de mensagem diferente, será necessário anexar o tipo de ícone após os botões usando um “+”:

123 Sub MsgBoxQuestionIcon ()MsgBox "Deseja continuar?", VbOKCancel + vbQuestionEnd Sub

Variáveis ​​MsgBox

Até agora, trabalhamos principalmente com a caixa de mensagem "OK" padrão. A caixa de mensagem OK tem apenas uma opção: Pressionar 'OK' permite que o código continue. No entanto, você também pode especificar outros agrupamentos de botões: OK / Cancelar, Sim / Não, etc.

Nesse caso, você desejará executar ações diferentes com base no botão pressionado. Vejamos um exemplo.

Aqui está a caixa de mensagem que geraremos:

Este é o código completo (vamos decompô-lo a seguir):

123456789101112 Sub MsgBoxVariable ()Dim answer As Integeranswer = MsgBox ("Deseja continuar?", vbQuestion + vbYesNo)Se a resposta = vb Sim, entãoMsgBox "Sim"OutroMsgBox "Não"Fim seEnd Sub

Primeiro, atribuímos a saída da caixa de mensagem a uma variável inteira.

123 Dim answer As Integeranswer = MsgBox ("Deseja continuar?", vbQuestion + vbYesNo)

Em seguida, usamos um If-Else para determinar o que fazer com base em qual botão é pressionado:

12345 Se a resposta = vb Sim, entãoMsgBox "Sim"OutroMsgBox "Não"Fim se

A função MsgBox retorna um valor inteiro (entre 1-7), portanto, definimos a variável como um tipo inteiro. No entanto, em vez de se referir ao número inteiro, você pode se referir a uma constante (por exemplo, vbOK, vbCancel, etc.). Observe esta tabela para ver todas as opções:

Botão 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 demonstrar cada agrupamento de botões:

OK Message Box - vbOKOnly

Esta é a caixa de mensagem VBA padrão.

123456 Sub MsgBox_OKOnly ()Dim answer As Integeranswer = MsgBox ("Exemplo OKOnly", vbOKOnly)End Sub

OK Cancelar caixa de mensagem - vbOKCancel

123456789101112 Sub MsgBox_OKCancel ()Dim answer As Integeranswer = MsgBox ("OK Cancelar Exemplo", vbOKCancel)Se resposta = vbOK EntãoMsgBox "OK"OutroMsgBox "Cancelar"Fim seEnd Sub

Sim Não Caixa de Mensagem - vb Sim Não

123456789101112 Sub MsgBox_YesNo ()Dim answer As Integeranswer = MsgBox ("Sim Não Exemplo", vb Sim Não)Se a resposta = vb Sim, entãoMsgBox "Sim"OutroMsgBox "Não"Fim seEnd Sub

Sim Não Cancelar Caixa de Mensagem - vbYesNoCancel

1234567891011121314 Sub MsgBox_YesNoCancel ()Dim answer As Integeranswer = MsgBox ("Sim Não Cancelar Exemplo", vbYesNoCancel)Se a resposta = vb Sim, entãoMsgBox "Sim"ElseIf answer = vbNo ThenMsgBox "Não"OutroMsgBox "Cancelar"Fim seEnd Sub

Abortar novamente a caixa de mensagem para ignorar - vbAbortRetryIgnore

1234567891011121314 Sub MsgBox_AbortRetryIgnore ()Dim answer As Integeranswer = MsgBox ("Abort Retry Ignore Example", vbAbortRetryIgnore)Se answer = vbAbort ThenMsgBox "Abortar"ElseIf answer = vbRetry ThenMsgBox "Tentar novamente"OutroMsgBox "Ignorar"Fim seEnd Sub

Nova tentativa de cancelar a caixa de mensagem - vbRetryCancel

123456789101112 Sub MsgBox_RetryCancel ()Dim answer As Integeranswer = MsgBox ("Exemplo de cancelamento de nova tentativa", vbRetryCancel)Se answer = vbRetry ThenMsgBox "Tentar novamente"OutroMsgBox "Cancelar"Fim seEnd Sub

Exemplos de VBA MessageBox

Confirmação da caixa de mensagem antes de executar a macro

Este código exibirá uma caixa de mensagem Sim Não antes de chamar uma macro. Se clicar em Sim, a macro será chamada; se clicar em Não, a macro não será executada.

12345678 Sub Msgbox_BeforeRunning ()Dim answer As Integeranswer = MsgBox ("Deseja executar Macro1?", vbQuestion + vbYesNo)Se a resposta = vb Sim, então chame a Macro1End Sub

Sim / Não Message Box - Exit Sub

Aqui, confirmaremos com o usuário se deseja continuar executando uma macro. Se clicar em Não, o código sairá do sub, caso contrário, o procedimento continuará.

12345678910 Sub Msgbox_BeforeRunning ()Dim answer As Integeranswer = MsgBox ("Deseja continuar?", vbQuestion + vbYesNo)Se answer = vbNo Then Exit Sub'Algum códigoEnd Sub

VBA Message Box no Access VBA

Todos os exemplos acima funcionam exatamente da mesma forma no Access VBA e no Excel VBA.

wave wave wave wave wave