As caixas de diálogo (Dialog Boxes) em Excel VBA são usadas para exibir informações ao usuário.
A função MsgBox exibe uma mensagem em uma caixa de diálogo e espera o usuário clicar em um botão e, em seguida, retorna um número inteiro indicando em qual botão o usuário clicou.
A caixa de diálogo mais comum é a Caixa de Mensagens, mas também podemos usar a Caixa de Entrada.
Até agora, usamos a caixa de diálogo MsgBox para exibir informações na tela.
Sub delete_B2()
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !" '"O conteúdo da célula B2 foi excluído!"
End Sub
Neste caso MsgBox é chamado com apenas um argumento. Ver código abaixo:
Agora criaremos uma caixa de diálogo que solicitará a confirmação da exclusão antes que as duas instruções sejam executadas. Então, há três argumentos que usaremos:
MsgBox([TEXT], [BUTTONS], [TITLE])
Sub delete_B2()
If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes
Then
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !"
End If
End Sub
Resultado:
Private Sub warning(var_text As String)
MsgBox "Caution : " & var_text & " !"
End Sub
Sub macro_test()
If Range("A1") = "" Then
warning "empty cell" '"célula vazia"
ElseIf Not IsNumeric(Range("A1")) Then
warning "non-numerical value" '"valor não numérico"
End If
End Sub
vbYesNo especifica que os botões de diálogo são "Yes" e "No", e vbYes representa o botão "Yes":
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Se o botão Yes for pressionado...
| Constante | Valor numérico | Descrição |
|---|---|---|
| vbOKOnly | 0 | ![]() |
| vbOKCancel | 1 | ![]() ![]() |
| vbAbortRetryIgnore | 2 | ![]() ![]() ![]() |
| vbYesNoCancel | 3 | ![]() ![]() ![]() |
| vbYesNo | 4 | ![]() ![]() |
| vbRetryCancel | 5 | ![]() ![]() |
| vbCritical | 16 | ![]() |
| vbQuestion | 32 | ![]() |
| vbExclamation | 48 | ![]() |
| vbInformation | 64 | ![]() |
Aqui está um exemplo MsgBox que continuará a ser exibido sempre no loop até que o usuário pressione Yes:
Sub humor()
Do
If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
Exit Do '=> Response Yes = Sim, saímos do loop
End If
Loop While 1 = 1 '=> Loop infinito
MsgBox ";-)"
End Sub
Para exibir uma nova faixa de opções, você pode usar a função Chr com argumento 10, responsável por mover a faixa de opções, por exemplo:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Obtemos o seguinte resultado:
Uma InputBox solicita que o usuário insira um valor em uma caixa de diálogo, por exemplo:
Sub example()
Dim result As String
result = InputBox("Text ?", "Title") 'A variável recebe o valor inserido no InputBox
If result <> "" Then 'Se o valor for qualquer coisa, menos "", o resultado será exibido
MsgBox result
End If
End Sub
Obtemos o seguinte resultado:
O terceiro argumento pode ser usado para definir o valor padrão:
InputBox("Text ?", "Title", "Default value")
O resultado é o seguinte: