Окно сообщений по умолчанию является модальным внутри приложения. Это значит, что невозможно выполнить никаких действий в приложении до тех пор, пока модальное окно не закрыто. Окно сообщений может быть также модальным в пределах операционной системы.
Вид модальности | Значение параметра | Идентификатор константы |
В рамках приложения | 0 | vbApplicationModal |
Во всей операционной системе | 4096 | vbSystemModal |
Коды кнопок, возвращаемые функцией MsgBox
Функция MsgBox возвращает код кнопки, на которой щёлкнул пользователь. Для каждой кнопки предусмотрен свой код и, соответственно, своя константа.
Для анализа возвращаемого функцией MsgBox кода кнопки рекомендуется использовать приведённые в таблице константы. После определения нажатой кнопки сохраните её код в переменной для последующего использования в программе.
Кнопка | Возвращаемое значение | Идентификатор константы | |
ОК | ОК | 1 | vbOK |
Cancel | Отмена | 2 | vbCancel |
Abort | Прервать | 3 | vbAbort |
Retry | Повторить | 4 | vbRetry |
Ignore | Пропустить | 5 | vbIgnore |
Yes | Да | 6 | vbYes |
No | Нет | 7 | vbNo |
Размещение сообщения в нескольких строках
Если текст сообщения достаточно длинный, то оно будет автоматически разбито на несколько строк. Если это разбиение вас не устраивает, то вы можете выполнить разбиение сами с помощью константы vbCrLf, которая включает символы конца строки и перевода каретки в начало следующей. Для суммирования строк рекомендуется использовать знак ” & ” вместо знака ” + ”,
Dim sMessage As String ‘текст сообщения
sMessage = ”Вы действительно хотите” & vbCrLf & ”завершить работу?”
Пример использования функции MsgBox
Приведённый ниже код выводит на экран запрос о подтверждении завершения работы приложения.
Dim sMessage As String ‘ текст сообщения
Dim sTitle As String ‘ заголовок окна
Dim nBattons As Integer ‘ параметр, определяющий набор кнопок и вид пиктограммы
Dim nResult As Integer ‘ код клавиши, нажатой пользователем
sMessage = ”Вы действительно хотите завершить работу?”
sTitle = ”Завершение работы” ‘ определение заголовка окна сообщения
nBattons = vbYesNo + vbInformation ‘ определение стиля окна сообщения с кнопками “Да” и “Нет”
‘ и пиктограммой с символом “i”
nResult = MsgBox (sMessage, nBattons, sTitle) ‘ отображает на экране окно сообщений
‘ и передаёт переменной nResult код нажатой пользователем кнопки
IF nResult = vbYes Then ‘ если пользователь нажал кнопку “Да”
End ‘ завершение программы
End If
Пример использования процедуры MsgBox
Если окно сообщения содержит одну кнопку и анализировать код нажатой кнопки не нужно, то удобно использовать процедуру MsgBox, которая имеет тот же синтаксис, что и функция, но не использует скобки, в которые помещают её параметры.
Приведённый ниже код выводит на экран сообщение о назначении программы.
Dim sMessage As String ‘текст сообщения
Dim sTitle As String ‘заголовок окна
Dim nBattons As Integer ‘параметр, определяющий набор кнопок и вид пиктограммы
sMessage = "Программа вычисляет корни квадратного уравнения.” & vbCrLf & _
“Введите значения коэффициентов a, b, с ” & vbCrLf & _
”и нажмите кнопку ‘’Вычислить’’."
sTitle = ”О программе” ‘определение заголовка окна сообщения
nBattons = vbOKOnly + vbInformation ‘отображение кнопки ОК и пиктограммы Информация
MsgBox sMessage, nBattons, sTitle ‘вызов процедуры MsgBox
Окно ВВОДА
Если для работы программы нужно ввести некоторую информацию, то для этого можно использовать специальное средство – окно ввода. В окне ввода отображается сообщение, предлагающее пользователю ввести что-либо, текстовое поле, в котором он может набрать нужный текст и две кнопки (ОК и Отмена). При нажатии кнопки ОК возвращает значение, находящееся в текстовом поле окна ввода. При нажатии кнопки Отмена функция InputBox возвращает пустую строку. С точки зрения программирования, работа с окнами ввода и окнами сообщений очень похожа.
Функция возвращает строку, введённую пользователем. Длина возвращаемой строки не более 255 символов. Синтаксис функции InputBox имеет вид:
InputBox (promt, [ title ], [Default], [ XPos ], [YPos], [helpfile], [contex])
As String
promt – обязательный параметр; строковое выражение, содержащее текст сообщения. Максимальная длина строки – 1024 символа;
title – необязательный параметр; строковое выражение, отображаемое в заголовке окна. Максимальная длина строки – около 60 символов, зависит от размера шрифта используемого в заголовках окон;
Default – необязательный параметр; строковое выражение, отображаемое в поле ввода;
XPos, YPos – необязательные параметры; начальное положение окна.
Прежде чем использовать в программе введённое пользователем значение, его нужно проверить. Для определения размера текстовой строки используется функция Len. Проверка типа данных обычно выполняется с помощью функции Val.