Диалоговые окна (Dialog Boxes) в Excel VBA используются для отображения информации пользователю.
Функция MsgBox отображает сообщение в открывшемся диалоговом окне и ожидает, что пользователь нажмет кнопку, после чего, возвращает целое число, указывающее на то, какую кнопку пользователь щелкнул.
Самым распространенным диалоговым окном является – окно сообщений (Message Box), но мы также можем использовать диалоговое окно с вводом данных (Input Box).
К настоящему моменту мы использовали окно MsgBox, чтобы выводить информацию на экран.
Sub delete_B2 ()
Range ("B2"). ClearContents
MsgBox "Содержание ячейки B2 удалено!"
End Sub
В этом случае MsgBox вызывается только с одним аргументом. См. код ниже:
Сейчас мы создадим диалоговое окно, которое будет просить подтверждение для удаления, прежде чем две инструкции будут выполнены. Далее есть три аргумента, которые мы будем использовать:
MsgBox ([TEXT], [BUTTONS], [TITLE])Text: текст диалогового окна Buttons: выбор кнопок (yes, no, cancel и т.п.) + другие опции 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 "пустая ячейка"
ElseIf Not IsNumeric (Range ("A1")) Then
warning "нецифровое значение"
End If
End Sub
vbYesNo отмечает, что кнопками диалогового окна являются "Yes" и "No", а vbYes представляет кнопку "Yes":
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Если кнопка Yes нажата...
| Constant | Numerical Value | Description |
| 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")
Результат следующий:
