Вывод сообщений. Функция MsgBox
Рассмотрим сейчас встроенные диалоговые окна, которые появляются при вызове некоторых функций VBA. И начнем наше рассмотрение с функции MsgBox, предназначенной для вывода сообщений. Диалоговое окно, создаваемое функцией MsgBox, служит для вывода на экран сообщения программы и получения от пользователя простой реакции на это сообщение в виде щелчка одной из кнопок окна. В простейшем случае эта функция вызывается как процедура. Например, вызов:
MsgBox "Сегодня на календаре" & Date
выведет окно:
Рис. 12.3. Пример окна сообщений
После щелчка кнопки 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, а второй - числовое выражение, задающее номер темы со справкой в этом файле.
Вот коды кнопок и других свойств окна функции MsgBox:
Имя константы | Код | Описание |
Коды наборов командных кнопок | ||
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 | модален относительно системы |
Диалоговое окно модально относительно приложения, если для продолжения работы в текущем приложении пользователь должен закончить работу в этом окне (ответить на сообщение). Модальность относительно системы означает, что все приложения будут приостановлены до завершения работы в данном окне.
Может показаться странным, что константа VbDefaultButton4 указывает на четвертую кнопку, хотя максимальное количество кнопок, определяемых кодами от 0 до 5, - три. Дело в том, что некоторые приложения (например, Excel) при наличии параметров справка и контекст могут автоматически добавить в окно кнопку справки Help, вызывающую окно справки.
Результирующее значение параметра buttons получается как сумма кодов по одному из каждой группы. Например, значение 36 = 4 + 32 = VbYesNo + VbQuestion означает, что в окне будет пиктограмма с вопросительным знаком и две кнопки Yes и No, причем первая из них будет считаться выбранной, если пользователь ее щелкнет или нажмет клавишу Enter.
Как узнать, какую кнопку выбрал пользователь? Присвоить значение функции MsgBox некоторой целочисленной переменной и проверить его. Возвращаемые MsgBox значения приведены в таблице:
Имя константы | Значение | Нажатая кнопка |
vbOK | 1 | OK |
vbCancel | 2 | Cancel |
vbAbort | 3 | Abort |
vbRetry | 4 | Retry |
vbIgnore | 5 | Ignore |
vbYes | 6 | Yes |
vbNo | 7 | No |
Если в окне есть кнопка Cancel, нажатие клавиши Esc завершает работу в окне и возвращается тот же код vbCancel, что и при выборе кнопки Cancel.
В следующем примере создается окно с сообщением об ошибке и вопросом о продолжении вычисления. В нем пиктограмма важного сообщения и кнопки Yes и No, причем вторая - кнопка, выбираемая по умолчанию. Файл со справкой называется ERRORS.HLP, а номер контекстной справки в этом файле равен 200.
Public Sub Mes2()
Dim Msg As String, MyString As String
Dim Btns As Integer
Dim Title As String, Help As String
Dim NmbCont As Integer, Result As Integer
Title = " Вы ввели неверные данные !" ' заголовок окна.
Msg = "Будем продолжать работу ?" ' сообщение.
Btns = vbYesNo + vbCritical + vbDefaultButton2 ' кнопки и свойства
Help = "ERRORS.HLP" ' имя файла со справкой
NmbCont = 200 ' номер темы
' Вывод сообщения.
Result = MsgBox(Msg, Btns, Title, Help, NmbCont)
If Result = vbYes Then ' пользователь нажал кнопку Yes.
MyString = "Да" ' действия по продолжению работы
'...
Else ' пользователь нажал кнопку No.
MyString = "Нет" ' действия по прекращению работы
'...
End If
End Sub
Пример 12.1. (html, txt)
При этом вызове на экране появится окно:
Рис. 12.4. Сообщение о неверных данных
- Объект Debug и его методы
- Метод Print
- Метод Assert
- Доказательство правильности программ
- Условная компиляция и отладка
- Директива #const
- #If … Then … #Else директива
- Ошибки периода выполнения и их обработка
- Модель управления ошибками в языке vba.
- Оператор On Error
- Оператор Resume
- Объект Err
- Метод Clear
- Метод Raise
- Класс и обработка ошибок
- Обработчики ошибок и вложенные вызовы процедур
- Структура обработчика ошибок
- Функция CvErr
- Оптимизация программ
- Приемы оптимизации кода
- Объявление переменных
- Математические операции
- Строковые операции
- Проектирование интерфейса. Меню
- Общие объекты Office 2000
- Коллекция CommandBars
- Свойства и методы коллекции CommandBars
- Свойства и методы объекта CommandBar
- Коллекция CommandBarControls и ее элементы
- О роли интерфейса
- Создание собственных и модификация встроенных меню
- Немного терминологии
- Возможности настройки и изменения системы меню
- Создание собственного головного меню
- Использование диалогового окна Настройка
- Создание меню с помощью vba
- Добавление выпадающих меню
- Использование диалогового окна Настройка
- Как добавить встроенное меню
- Добавление выпадающего меню с помощью vba
- Добавление подменю
- Вставка и группировка команд
- Добавление встроенной команды с помощью окна Настройка
- Добавление собственной команды с помощью окна Настройка
- Добавление команд с помощью vba
- Пример построения документа с собственным меню
- Группировка команд меню
- Удаление команд меню
- Удаление команды с помощью окна Настройка
- Удаление команды с помощью vba
- Как восстановить удаленные встроенные компоненты меню
- Изменение меню во время работы программы
- Вывод собственной панели меню
- Динамическое изменение видимости команд меню
- Управление доступом к командам меню
- Переименование команды меню
- Диалоговые окна и элементы управления
- Общие сведения и применение
- Встроенные диалоговые окна Коллекция Dialogs и объект Dialog
- Вывод сообщений. Функция MsgBox
- Окно ввода данных. Функция InputBox
- Создание пользовательских диалоговых окон
- Создание страниц и вкладок в диалоговых окнах
- Добавление дополнительных элементов управления
- Пример создания диалогового окна
- Разработка процедур, обрабатывающих события диалогового окна и его устройств
- Вызов собственного диалогового окна
- Установка начальных значений свойств элементов управления
- Использование Me в качестве имени текущего диалогового окна
- Модификация управляющих элементов во время работы
- Управление доступом к элементу
- Перемещение фокуса на элемент управления
- Изменение размеров диалогового окна
- Проверка корректности данных
- Обмен данными с диалоговым окном
- Закрытие диалогового окна
- Объект UserForm (диалоговое окно), коллекция UserForms (диалоговые окна)
- Коллекция Controls
- Объекты - элементы управления Перечень основных элементов управления
- Общие свойства элементов управления Объект-родитель
- Имя объекта
- Значение объекта
- Расположение объекта
- Параметры внешнего вида объекта
- Свойства поведения объекта
- Другие свойства
- CheckBox - флажок (кнопка выбора)
- ComboBox - комбинированный список
- CommandButton - командная кнопка
- Frame - рамка (группы)
- Image - изображение
- Label - метка (надпись, статический текст)
- ListBox - список
- MultiPage - набор страниц
- OptionButton - кнопка-переключатель
- ScrollBar - полоса прокрутки
- SpinButton - счетчик
- TabStrip - полоса вкладок
- TextBox - поле ввода (окно редактирования)
- ToggleButton - выключатель
- Объект DataObject
- Перемещение объектов. Как реализовать технику DragAndDrop
- События Событие AddControl (добавился элемент)
- Событие AfterUpdate (После модификации)
- Событие BeforeDragOver (Перед завершением перетаскивания)
- Событие BeforeDropOrPaste (Перед опусканием или вставкой)
- Событие BeforeUpdate (Перед модификацией)
- Событие Change (Изменение)
- Событие Click (Щелчок)
- Событие DblClick (Двойной щелчок)
- Событие DropButtonClick (Щелчок кнопки списка)
- События Enter, Exit (Вход, Выход)
- Событие Error (Ошибка)
- События KeyDown, KeyUp (Клавиша нажата, Клавиша отпущена)
- Событие KeyPress (Клавиша нажата)
- Событие Layout (Расположение)
- События MouseDown, MouseUp (Мышь нажата, Мышь отпущена)
- Событие MouseMove (Мышь движется)
- Событие RemoveControl (Удаление элемента)
- Событие Scroll (Прокрутка)
- События SpinDown (Уменьшить счетчик), SpinUp (Увеличить счетчик)
- Событие Zoom (Расширение)
- Методы Метод Add (Добавить)
- Метод AddItem (Добавить элемент)
- Метод Clear (Очистить)
- Метод Copy (Копировать)
- Метод Cut (Вырезать)
- Метод DropDown (Вывести список)
- Метод Move (Сдвинуть)
- Метод Paste (Вставить)
- Реализация операций Cut, Copy, Paste в диалоговых окнах
- Метод RedoAction (Повторить действие)
- Метод Remove (Удалить)
- Метод RemoveItem (Удалить элемент)
- Метод Repaint (Перерисовать)
- Метод Scroll (Прокрутить)
- Метод SetDefaultTabOrder (Установить стандартный порядок обхода)
- Метод SetFocus (Установить фокус)
- Метод UndoAction (Отменить действие)
- Реализация операций Undo и Redo в диалоговых окнах
- Метод zOrder (z-упорядочить)
- Основные виды файлов в Office 2000
- Открытие и создание файлов
- Закрытие файлов
- Запись в файлы последовательного доступа
- Чтение файлов последовательного доступа
- Ввод-вывод для файлов произвольного доступа и бинарных файлов
- Работа с данными переменной длины
- Один пример работы с Binary файлом