Лекция: Функция MsgBox

В наших примерах мы не раз использовали для вывода сообщений функцию MsgBox. Рассмотрим её подробнее.

Функция MsgBox выводит на экран диалоговое окно с сообщением и кнопками, а затем возвращает значение типа Integer, указывающее, какую кнопку нажал пользователь.

Синтаксис:

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Синтаксис функции MsgBox содержит следующие именованные аргументы:

Аргумент Описание
prompt Сообщение в диалоговом окне. Может состоять из нескольких строк. Для разделения строк можно использовать символ возврата каретки (Chr(13)), перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) & Chr(10))
buttons Числовое выражение, представляющее собой СУММУ значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию равно 0 (отображается только кнопка ОК)
title Заголовок диалогового окна
helpfile Имя файла, содержащего справочные сведения. Если этот аргумент указан, необходимо указать также аргумент context
context Номер соответствующего раздела справочной системы. Указывается вместе с аргументом helpfile

Допустимые значения аргумента buttons:

Константа Значение Описание
vbOKOnly Отображается только кнопкаOK
vbOKCancel Отображаются кнопки OKиОтмена(Cancel)
vbAbortRetryIgnore Отображаются кнопки Прервать (Abort), Повторить(Retry) и Пропустить(Ignore)
vbYesNoCancel Отображаются кнопки Да(Yes), Нет (No) и Отмена(Cancel)
vbYesNo Отображаются кнопки Да (Yes) и Нет (No)
vbRetryCancel Отображаются кнопки Повторить (Retry) и Отмена(Cancel).
vbCritical В окне сообщения отображается значок «Критическое сообщение»
vbQuestion В окне сообщения отображается вопросительный знак
vbExclamation В окне сообщения отображается восклицательный знак
vbInformation В окне сообщения отображается знак «Информация»
vbDefaultButton1 Основной является первая кнопка
vbDefaultButton2 Основной является вторая кнопка
vbDefaultButton3 Основной является третья кнопка
vbDefaultButton4 Основной является четвертая кнопка
vbApplicationModal Модальное окно на уровне приложения: чтобы продолжить работу с текущим приложением, необходимо ответить на данное сообщение
VbSystemModal Модальное окно на уровне системы: все приложения будут недоступны до тех пор, пока пользователь не ответит на данное сообщение

Первая группа значений (0–5) указывает число и тип кнопок, отображаемых в окне диалога.

Вторая группа (16, 32, 48, 64) задает тип используемого значка.

Третья группа (0, 256, 512) определяет кнопку, которая является основной, а четвертая (0, 4096) – модальность окна сообщения. При определении значения аргумента buttons следует суммировать не более одного значения из каждой группы.

Возвращаемые значения при нажатии кнопки:

Константа Значение Нажатая кнопка
vbOK OK
vbCancel Отмена (Cancel)
vbAbort Прервать (Abort)
vbRetry Повторить (Retry)
vbIgnore Пропустить (Ignore)
vbYes Да (Yes)
vbNo Нет (No)

Примеры:

1. Команда: MsgBox «Случайные числа разыграны!»

выводит на экран диалоговое окно с одной кнопкой ОК и стандартным заголовком Excel:

2. Это же окно с информационным значком и другим заголовком:

MsgBox «Случайные числа разыграны!», _

vbDefaultButton1 + vbInformation, «Случайные числа»

3. Фрагмент кода с диалогом о замене существующего файла:

1) Path = «C:\St\Случайные числа.xls»
2) Filename = Dir(Path)
3) If Filename <> "" Then
4) 'В переменной Сообщение задается структура диалогового окна:
5) Сообщение = vbYesNo + vbQuestion + _ vbDefaultButton1
6) 'Выводит сообщение:
7) Кнопка = MsgBox((«Файл » & Filename & _ " уже существует. Заменить его?"), _ Сообщение)
8) Select Case Кнопка
9) Case vbYes
10) MsgBox «Нажата кнопка Да!»
11) Case vbNo
12) MsgBox «Нажата кнопка Нет!»
13) End Select
14) Else
15) MsgBox «Файл » & Filename & " не найден!"
16) End If

Комментарии к программе:

ü 5-ю строку можно записать в следующем виде:

Сообщение = 4 + 32

По субъективному мнению автора, эта запись нежелательна, так как она неинформативна.

ü Аналогично можно было бы записать 9-ю и 11-ю строку (через возвращаемые значения):

Case 6

Case 7

Согласитесь – код совершенно нечитабельный!

ü Вместо конструкцииSelect Case можно было бы воспользоваться управляющей структурой If-Then-Else. Тогда вместо строк (8) – (13) запишется следующий код:

If Кнопка = vbYes Then

MsgBox «Нажата кнопка Да!»

Else

MsgBox «Нажата кнопка Нет!»

End If

еще рефераты
Еще работы по информатике