Рассмотрим сейчас встроенные диалоговые окна, которые появляются при вызове некоторых функций VBA. И начнем наше рассмотрение с функции MsgBox, предназначенной для вывода сообщений. Диалоговое окно, создаваемое функцией MsgBox, служит для вывода на экран сообщения программы и получения от пользователя простой реакции на это сообщение в виде щелчка одной из кнопок окна. В простейшем случае эта функция вызывается как процедура. Например, вызов:
MsgBox "Сегодня на календаре" & Date
выведет окно:
После щелчка кнопки OK вызов функции завершится, и выполнение программы возобновится с оператора, стоящего непосредственно за этим вызовом.
Диалоговое окно, выводимое функцией MsgBox, можно обогатить несколькими кнопками, чтобы пользователь мог указать с их помощью направление дальнейшего вычисления, а также присоединить к нему контекстную справку. В общем случае вызов MsgBox имеет вид:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Здесь параметр prompt (сообщение) - строковое выражение, значение которого выводится в окне. Его максимальная длина не должна превышать 1024 символов. Разбиение на строки в этом выражении можно производить, используя символ возврата каретки (Chr(13)), символ перевода строки (Chr(10)), их комбинацию (Chr(13) & Chr(10)) или константу vbCrLf. Числовой параметр buttons (кнопки) задает виды командных кнопок, помещаемых в окне, кнопку, выбираемую по умолчанию, и модальность диалогового окна. Он получается как сумма кодов соответствующих кнопок и свойств. Явно не заданный, этот параметр считается равным 0. Строковое выражение title (заголовок) задает заголовок окна. Если его нет, заголовком становится имя приложения (см. пример, приведенный выше, где мы использовали Word). Параметры helpfile (файл справки) и context (контекст) должны присутствовать (или отсутствовать) вместе. Первый из них - имя файла, содержащего справку, которая будет выведена при нажатии клавиши F1, а второй - числовое выражение, задающее номер темы со справкой в этом файле.
Коды наборов командных кнопок | ||
vbOKOnly | 0 | только кнопка OK (Готово) |
VbOKCancel | 1 | кнопки OK и Cancel (Отказ) |
VbAbortRetryIgnore | 2 | кнопки Abort (Прервать), Retry (Продолжить) и Ignore (Игнорировать) |
VbYesNoCancel | 3 | кнопки Yes (Да), No (Нет) и Cancel |
VbYesNo | 4 | кнопки Yes и No |
VbRetryCancel | 5 | кнопки Retry и Cancel |
Коды пиктограмм | ||
VbCritical | 16 | важное сообщение (крестик в круге) |
VbQuestion | 32 | запрос (вопросительный знак) |
VbExclamation | 48 | предупреждение (восклицательный знак) |
VbInformation | 64 | информационное сообщение (i в круге) |
Кнопка, выбранная по умолчанию | ||
VbDefaultButton1 | 0 | первая кнопка |
VbDefaultButton2 | 256 | вторая кнопка |
VbDefaultButton3 | 512 | третья кнопка |
VbDefaultButton4 | 768 | четвертая кнопка |
Модальность диалога | ||
VbApplicationModal | 0 | модален относительно приложения |
VbSystemModal | 4096 | модален относительно системы |
vbOK | 1 | OK |
vbCancel | 2 | Cancel |
vbAbort | 3 | Abort |
vbRetry | 4 | Retry |
vbIgnore | 5 | Ignore |
vbYes | 6 | Yes |
vbNo | 7 | No |