Uma das dúvidas que pipocam no nosso site sempre que postamos algum código em VBA é como abrir as janelinhas de texto automaticamente dando alguma mensagem, perguntando algo específico, etc. Então é isso que vamos ver hoje na 3ª aula do nosso curso de VBA.

E para ver todas as outras aulas é só clicar aqui.

A MsgBox é uma caixa de mensagem que exibe determinada mensagem ao usuário esperando que ele clique no botão mostrado na mesma caixa de texto.

Assim como as funções, a MsgBox possui uma estrutura predefinida e que deve ser seguida. Ela é:

MsgBox([prompt], [ botões], [título], [Helpfile], [context]) As VbMsgBoxResult

Pareceu complicado? Vamos destrinchar parte a parte:

Prompt é Expressão obrigatória que é o básico da sua caixa de mensagem, ou seja, a própria "mensagem". Assim como nas funções, aquilo que será mostrado em texto deve estar entre aspas, para que o Excel o identifique como tal.

O legal é que, mesmo que possua outros 4 campos, somente este é obrigatório. Veja como fizemos uma mensagem abaixo somente com este campo:

MsgBox "Esse é um teste de mensagem do Aprender Excel"

Botões é uma parte opcional que irá especificar o número e o tipo de botões a exibir, o estilo do ícone a ser utilizado, a modalidade da caixa de mensagem e a identidade do botão padrão. Lembrando que o valor padrão é 0, onde aparece somente o botão "ok".

Confira as possibilidades disponíveis:

0 - Exibe o "OK" e o primeiro botão é o padrão
1 - Exibe o "Ok" e o "Cancelar"
2 - Exibe o "Abortar" "Repetir" e "Ignorar"
3 - Exibe o "Sim" "Não" e "Cancelar"
4 - Exibe o "Sim" e "Não"
5 - Exibir "Repetir" e o "Cancelar"
16384 - Exibe os botões "ok" e "Ajuda"

Para personalizar ícones você pode usar:

16 - Exibe o ícone de mensagem crítica
32 - Exibe o ícone de interrogação
48 - Exibe o ícone de exclamação dentro do triângulo amarelo
64 - Exibe o ícone de exclamação

Você ainda pode mudar qual o botão padrão e alguns recursos de formatação

0 - O primeiro botão é o padrão
256 - O segundo botão é o padrão
512 - O terceiro botão é o padrão
768 - O quarto botão é o padrão
524288 - O texto é alinhado à direita

Mas como vimos na fórmula antes, só podemos ter uma referência de botão. Como fazer então para colocar o ícone de mensagem crítica, alinhar à direita, escolher as mensagens "Abortar", "Repetir" e "Ignorar" e fazer com que o botão padrão seja o 3º ? Para misturar mais de 1 condição é só somar os valores. No exemplo acima a soma é 524818.

MsgBox "Esse é um teste de mensagem do Aprender Excel", 524818

O campo Título dispensa explicações e irá especificar o título da caixa de mensagens. Como trata-se de um texto, não esqueça de colocar entre aspas, ok?

MsgBox "Esse é um teste de mensagem do Aprender Excel", 524818, "Aprender Excel"

Helpfile e Context são os 2 últimos campos e trabalharão juntos. Eles são códigos que servem para o Excel identifique a ajuda correta a ser exibida quando o usuário apertar F1, por exemplo. Eles são campos opcionais, mas caso um deles seja usado, o outro passa a ser obrigatório. O código do Helpfile irá servir para que o Excel localize o arquivo de ajuda, e o Context para que exiba a ajuda correta dentre aquelas contidas no arquivo de ajuda.

Aqui não temos um exemplo para dar, pois o Helpfile e o Context serão criados por você na hora em que estiver desenvolvendo o projeto.

Veja que você pode mesclar quaisquer campos com sua mensagem, sem a necessidade de ter que colocar o anterior para colocar o próximo. Por exemplo, podemos colocar um título (3º campo) sem definir os botões (2º campo). Nesse caso você só precisa deixar um espaço em branco no campo reservado aos botões.

MsgBox "Definimos um título sem definir os botões", , "Aprender Excel"

Quebra de linha

E quando a frase é muito longa ou então precisamos quebrá-la por motivos estéticos? Para isso vamos usar o código vbLf circundado pelo sinal + 

Por fim, note que você não precisa declarar o "As VbMsgBoxResult" no final do código, pois ele será necessário apenas em casos bem específicos. Note que em nenhum dos nossos exemplos acima eu o utilizei e não obtive problemas.

Agora que você já sabe o básico das caixas de mensagens, prepare-se para, nas próximas aulas, aprender a inserir caixas para digitação, selecionador de valores, etc. dentro das mesmas. Até lá.

E se você está gostando das nossas aulas de VBA a partir do zero então não esqueça de conferir as aulas anteriores.