Діалогові вікна (Dialog Boxes) в Excel VBA використовуються для відображення інформації користувачу.
Функція MsgBox відображає повідомлення в діалоговому вікні та очікує, що користувач натисне кнопку, після чого, повертає ціле число, яке вказує на те, яку кнопку користувач клацнув.
Найпоширенішим діалоговим вікном є - вікно повідомлень (Message Box), але ми також можемо використовувати діалогове вікно з введенням даних (Input Box).
До теперішнього моменту ми використовували діалогове вікно MsgBox, щоби виводити інформацію на екран.
Sub delete_B2()
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !" ' "Вміст комірки B2 видалений !"
End Sub
В цьому випадку MsgBox викликається лише з одним аргументом. Див. код нижче:
Зараз ми створимо діалогове вікно, яке проситиме підтвердження для видалення, до того як дві інструкції будуть виконані. Далі є три аргументи, які ми будемо використовувати:
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
Результат:
Private Sub warning(var_text As String)
MsgBox "Caution : " & var_text & " !"
End Sub
Sub macro_test()
If Range("A1") = "" Then
warning "empty cell" ' "порожня комірка"
ElseIf Not IsNumeric(Range("A1")) Then
warning "non-numerical value" ' "нечислове значення"
End If
End Sub
vbYesNo зазначає, що кнопки діалогового вікна є "Yes" і "No", та vbYes представляє кнопку "Yes":
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Якщо кнопка Yes натиснута...
| Константа | Числове значення | Опис |
|---|---|---|
| vbOKOnly | 0 | ![]() |
| vbOKCancel | 1 | ![]() ![]() |
| vbAbortRetryIgnore | 2 | ![]() ![]() ![]() |
| vbYesNoCancel | 3 | ![]() ![]() ![]() |
| vbYesNo | 4 | ![]() ![]() |
| vbRetryCancel | 5 | ![]() ![]() |
| vbCritical | 16 | ![]() |
| vbQuestion | 32 | ![]() |
| vbExclamation | 48 | ![]() |
| vbInformation | 64 | ![]() |
Тут є приклад MsgBox, що буде продовжувати відображатись кожного разу при циклі, допоки користувач тиснутиме Yes:
Sub humor()
Do
If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
Exit Do ' => Відповідь Yes = Так, ми виходимо з циклу
End If
Loop While 1 = 1 ' => Нескінченний цикл
MsgBox ";-)"
End Sub
Для відображення нової стрічки ви можете використати функцію Chr з аргументом 10, який відповідає за перенесення стрічки, наприклад:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Отримаємо наступний результат:

InputBox запитує користувача ввести значення в діалогове вікно, наприклад:
Sub example()
Dim result As String
result = InputBox("Text ?", "Title") 'Змінній присвоюється значення, що введене в InputBox
If result <> "" Then 'Якщо значення будь-яке, але не "", то результат буде відображений
MsgBox result
End If
End Sub
Отримаємо наступний результат:
Третій аргумент може бути використаний для встановлення значення по замовчуванню:
InputBox("Text ?", "Title", "Default value")
Результат наступний: