- Встроенные диалоговые окна
- Диалоговое окно для вывода сообщения
- Диалоговое окно для ввода данных
- Организация ввода и вывода сообщений
- Структура процедуры
- Использование операторов
- Объявления
- Оператор присваивания
- Функция MsgBox
- Синтаксис
- Параметры
- Возвращаемые значения
- Примечания
- Пример
- См. также
- Поддержка и обратная связь
Встроенные диалоговые окна
Диалоговые окна предназначены для информирования пользователя, а также для получения данных от пользователя. В большинстве случаев диалоговые окна являются модальными (т. е. блокирующими все окна приложения или только родительское окно) и отображаются на непродолжительный промежуток времени. Язык VBA позволяет использовать как встроенные диалоговые окна, так и окна, создаваемые программистом. В этом разделе мы рассмотрим встроенные диалоговые окна, которые позволят выводить сообщения и получать данные от пользователя. Создание пользовательских диалоговых окон мы рассмотрим в отдельной главе.
Диалоговое окно для вывода сообщения
Для вывода сообщений предназначена функция MsgBox() . Форматы функции:
В параметре указывается текст сообщения. Если необходимо вывести сообщение на нескольких строках, то следует дополнительно указать последовательность символов \r\n (перевод каретки и перевод строки). Вставить эту последовательность символов позволяет функция Chr( ) . Символ \r имеет код 13, а символ \n — код 10. Используя символ конкатенации строк & можно объединить эти символы в последовательность. Пример вывода сообщений:
Вместо функции Chr() можно использовать специальные константы:
- vbCr — вставляет символ \r ; эквивалентно Chr(13) ;
- vbLf — вставляет символ \n ; эквивалентно Chr(10) ;
- vbCrLf — вставляет последовательность символов \r\n ; эквивалентно Chr(13) & Chr(10) ;
- vbNewLine — эквивалентно Chr(13) & Chr(10) или в Macintosh Chr(13) ;
- vbTab — вставляет символ табуляции; эквивалентно Chr(9) .
Пример вывода сообщений на двух строках:
Необязательный параметр указывает какие кнопки должны отображаться в диалоговом окне, задает стиль иконки и др. свойства окна. В качестве значения можно указать следующие константы (или их комбинацию):
- vbOKOnly — 0 — отображается только кнопка OK (значение по умолчанию);
- vbOKCancel — 1 — отбражаются кнопки OK и Отмена;
- vbAbortRetryIgnore — 2 — отображаются кнопки Прервать, Повтор и Пропустить;
- vbYesNoCancel — 3 — отображаются кнопки Да, Нет и Отмена;
- vbYesNo — 4 — отображаются кнопки Да и Нет;
- vbRetryCancel — 5 — отображаются кнопки Повтор и Отмена;
- vbCritical — 16 — задает вывод иконки критического сообщения (белый крест внутри красного круга). Пример вывода иконки:
- vbQuestion — 32 — задает вывод иконки для запроса подтверждения каких-либо действий (синий вопросительный знак внутри белого круга). Пример вывода иконки:
- vbExclamation — 48 — задает вывод иконки для предупреждающего сообщения (черный вослицательный знак внутри желтого треугольника). Пример вывода иконки:
- vbInformation — 64 — задает вывод иконки для информирующего сообщения (синяя буква i внутри белого круга). Пример вывода иконки:
- vbDefaultButton1 — 0 — первая кнопка выбрана по умолчанию (значение по умолчанию). Пример:
- vbDefaultButton2 — 256 — вторая кнопка выбрана по умолчанию. Пример:
- vbDefaultButton3 — 512 — третья кнопка выбрана по умолчанию. Пример:
- vbDefaultButton4 — 768 — четвертая кнопка выбрана по умолчанию;
- vbApplicationModal — 0 — окно будет модальным в пределах приложения (значение по умолчанию). Прежде чем продолжить работу с приложением окно необходимо закрыть нажатием на одну из кнопок. Пример:
- vbSystemModal — 4096 — окно будет отображаться поверх всех других окон в системе. Прежде чем продолжить работу с приложением окно необходимо закрыть нажатием на одну из кнопок. Пример:
- vbMsgBoxHelpButton — 16384 — добавляет в окно кнопку Справка. Пример:
- vbMsgBoxRight — 524288 — текст выравнивается заголовка и сообщения по правому краю. Пример:
Как видно из примеров, все константы делятся на несколько групп. Первая группа указывает какие кнопки отображаются в окне, вторая группа задает вид иконки, третья группа устанавливает кнопку по умолчанию, четвертая группа управляет модальностью окна. Константы из разных групп можно комбинировать между собой, указывая их через оператор + . Для примера выведем модальное окно с критическим сообщением, которое имеет содержит кнопки Да, Нет, Отмена и Справка, причем по умолчанию будет выбрана кнопка Отмена:
Параметр в функции MsgBox() задает текст, который будет отображен в заголовке окна. Если параметр не указан, то выводится имя приложения. Пример:
Необязательный параметр задает имя справочного файла, а параметр — номер раздела в справочном файле. Эти параметры должны указываться одновременно.
После вывода окна пользователь должен нажать одну из кнопок. Благодаря тому, что функция MsgBox() возвращает значение, внутри программы можно определить какую именно кнопку нажал пользователь. Функция возвращает одно из следующих значений:
- vbOK — 1 — нажата кнопка OK;
- vbCancel — 2 — нажата кнопка Отмена или кнопка Закрыть в заголовке окна;
- vbAbort — 3 — нажата кнопка Прервать;
- vbRetry — 4 — нажата кнопка Повтор;
- vbIgnore — 5 — нажата кнопка Пропустить;
- vbYes — 6 — нажата кнопка Да;
- vbNo — 7 — нажата кнопка Нет.
Для примера выполним проверку двумя способами. Первый способ заключается в использовании оператора ветвления If (листинг 1.6), а второй способ — в использовании оператора выбора Select (листинг 1.7).
Листинг 1.6. Проверка нажатой кнопки с помощью оператора If
Листинг 1.7. Проверка нажатой кнопки с помощью оператора Select
Диалоговое окно для ввода данных
Окно для ввода данных реализуется с помощью функции InputBox() . Формат функции:
В параметре указывается текст сообщения. Если необходимо вывести сообщение на нескольких строках, то следует дополнительно указать последовательность символов \r\n (перевод каретки и перевод строки) или только символ \r . Вставить эту последовательность символов позволяет функция Chr( ) . Можно также воспользоваться одной из констант, которые мы уже рассматривали при изучении функции MsgBox() в предыдущем разделе. Пример вывода сообщения на нескольких строках:
Необязательный параметр задает текст, который будет отображен в заголовке окна. Если параметр не указан, то выводится имя приложения. В необязательном параметре можно указать значение, которое отобразится в текстовом поле. Пример:
В необязательных параметрах и можно указать координаты вывода окна на экране относительно левого верхнего угла. Положительная ось X направлена вправо, а положительная ось Y — вниз. Если параметры не указаны, то окно выводится по центру.
Необязательный параметр задает имя справочного файла, а параметр — номер раздела в справочном файле. Эти параметры должны указываться одновременно.
Функция возвращает текст, введенный пользователем в текстовое поле. Если пользователь нажал кнопку Отмена или кнопку Закрыть в заголовке окна, то функция вернет пустую строку.
Переделаем нашу первую программу так, чтобы она здоровалась не со всем миром, а только с нами (листинг 1.8).
Листинг 1.8. Пример использования функции InputBox()
Статьи по Visual Basic for Applications (VBA)
Помощь сайту
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов
Источник
Организация ввода и вывода сообщений
Подобно многим языкам программирования Visual Basic for Application (VBA) позволяет создать три типа процедур: Sub, Function, Property.
Процедура – это набор описаний и инструкций, сгруппированных для выполнения.
Процедура Sub – набор команд, с помощью которого можно решить определенную задачу. При ее запуске выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub. Записываемые макросы автоматически описываются как процедуры Sub, любой макрос или другой код VBA, который просто выполняет определенный набор действий, используя приложения Office, и обычно является процедурой Sub.
Процедура Function (или функция) также представляет собой набор команд, который решает определенную задачу. Различия заключается в том, что процедуры данного типа обязательно возвращают значение. При создании процедуры Function можно описать тип данных, который возвращает функция. Функции обычно используются при выполнении вычислений, операциями с текстом, либо возвращают логические значения.
Процедура Property используется для ссылки на свойство объекта. Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры облегчают хранение и применение информации, если использовать их сначала для сохранения в свойстве этой информации, а затем для ее чтения.
Структура процедуры
При записи процедуры требуется соблюдать правила ее описания. Упрощенный синтаксис для процедур Sub является следующим:
Синтаксис описания функций очень похож на синтаксис описания процедуры Sub, однако, имеются некоторые отличия:
Использование операторов
Процедуры состоят из операторов – наименьших единиц программного кода. Как правило, операторы занимают по одной строке программного кода, и в каждой строке обычно содержится только один оператор, но это не обязательно. В VBA имеется четыре типа операторов: объявления, операторы присваивания, выполняемые операторы и параметры компилятора.
Объявления
Объявление – это оператор, сообщающий компилятору VBA о намерениях по поводу использования в программе именованного объекта (переменной, константы, пользовательского типа данных или процедуры). Кроме того, объявление задает тип объекта и обеспечивает компилятору дополнительную информацию о том, как использовать данный объект. Объявив объект, можно использовать его в любом месте программы.
Переменные – это именованные значения, которые могут изменяться во время выполнения программы.
Рассмотрим пример объявления переменной.
С помощью оператора Dim объявляется переменная с именем МоеЛюбимоеЧисло и объявляется, что значение, которое она будет содержать, должно быть целым:
Константы представляют собой именованные значения, которые не меняются.
Оператор Constant создает строковую константу (текст) с именем НеизменныйТекст, представляющую собой набор символов Вечность:
Оператором Type объявляется пользовательский тип данных с именем Самоделкин, определяя его как структуру, включающую строковую переменную с именем Имя и переменную типа Date с именем ДеньРождения. В данном случае объявление займет несколько строк:
Объявление Private создает процедуру типа Sub с именем СкрытаяПроцедура, говоря о том, что эта процедура является локальной в смысле области видимости. Завершающий процедуру оператор End Sub считается частью объявления.
Оператор присваивания
Оператор присваивания = приписывают переменным или свойствам объектов конкретные значения. Такой оператор всегда состоят из трех частей: имени переменной, или свойства, знака равенства и выражения, задающего нужное значение.
Оператор = присваивает переменной МоеЛюбимоеЧисло значение суммы переменной ДругоеЧисло и числа 12.
В следующей строке кода, записывается, что свойству Color (Цвет) объекта AGraphicShape присваивается значение Blue (Синий) в предположении, что Blue является именованной константой:
В следующеей строке, чтобы задать значение переменной КвадратныйКорень, для текущего значения переменной МоеЛюбимоеЧисло вызывается функция Sqr — встроенная функция VBA вычисления квадратного корня:
В VBA выражением называется любой фрагмент программного кода, задающий некоторое числовое значение, строку текста или объект. Выражение может содержать любую комбинацию чисел или символов, констант, переменных, свойств объектов, встроенных функций и процедур типа Function, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:
Источник
Функция MsgBox
Выводит сообщение в диалоговом окне, ожидает нажатия кнопки пользователем и возвращает значение типа Integer, которое указывает, какая кнопка была нажата.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
MsgBox (сообщение, [ кнопки, ] [ заголовок, ] [ файл_справки, контекст ])
Синтаксис функции MsgBox включает следующие именованные аргументы:
Часть | Описание |
---|---|
сообщение | Обязательный аргумент. Строковое выражение, отображающееся в диалоговом окне. Максимальная длина строки аргумента сообщение составляет приблизительно 1024 знака и зависит от их ширины. Если аргумент сообщение содержит несколько строк, их можно разделить с помощью знака возврата каретки (Chr(13)), знака перевода строки (Chr(10)) или сочетания этих знаков (Chr(13) & Chr(10)). |
кнопки | Необязательный аргумент. Числовое выражение, являющееся суммой значений, указывающих количество и тип отображаемых кнопок, стиля значков, выбранной по умолчанию кнопки и модальности окна сообщения. Если аргумент кнопки пропущен, по умолчанию используется значение 0. |
заголовок | Необязательный аргумент. Строковое выражение, отображаемое в заголовке диалогового окна. Если аргумент заголовок пропущен, в заголовке выводится имя приложения. |
файл_справки | Необязательный аргумент. Строковое выражение, определяющее файл, в котором содержится контекстная справка для данного диалогового окна. Если задан аргумент файл_справки, необходимо также указать аргумент контекст. |
контекст | Необязательный аргумент. Числовое выражение, представляющее собой номер контекста, присвоенный автором справки соответствующему разделу. Если задан аргумент контекст, необходимо также указать аргумент файл_справки. |
Параметры
Аргумент кнопки может принимать следующие значения:
Константа | Значение | Описание |
---|---|---|
vbOKOnly | 0 | Отображается только кнопка ОК. |
vbOKCancel | 1 | Отображаются кнопки ОК и Отмена. |
vbAbortRetryIgnore | 2 | Отображаются кнопки Прервать, Повторить и Пропустить. |
vbYesNoCancel | 3 | Отображаются кнопки Да, Нет и Отмена. |
vbYesNo | 4 | Отображаются кнопки Да и Нет. |
vbRetryCancel | 5 | Отображаются кнопки Повторить и Отмена. |
vbCritical | 16 | Отображается значок важного сообщения. |
vbQuestion | 32 | Отображение значка Warning Query (Запрос с предупреждением). |
vbExclamation | 48 | Отображение значка Warning Message (Сообщение с предупреждением). |
vbInformation | 64 | Отображается значок информационного сообщения. |
vbDefaultButton1 | 0 | По умолчанию активна первая кнопка. |
vbDefaultButton2 | 256 | По умолчанию активна вторая кнопка. |
vbDefaultButton3 | 512 | По умолчанию активна третья кнопка. |
vbDefaultButton4 | 768 | По умолчанию активна четвертая кнопка. |
vbApplicationModal | 0 | Модальность на уровне приложения. Пользователь должен ответить на сообщение, чтобы продолжить работу в текущем приложении. |
vbSystemModal | 4096 | Модальность на уровне системы. При ожидании ответа пользователя на сообщение приостанавливается работа всех приложений. |
vbMsgBoxHelpButton | 16384 | Добавляет кнопку Справка в окно сообщения. |
vbMsgBoxSetForeground | 65536 | Расположение окна сообщения на переднем плане. |
vbMsgBoxRight | 524288 | Текст выравнивается по правому краю. |
vbMsgBoxRtlReading | 1048576 | Система чтения справа налево для иврита и арабского языка. |
Первая группа значений (0–5) отражает число и тип кнопок в диалоговом окне. Вторая группа (16, 32, 48, 64) описывает стиль значка сообщения. Третья группа (0, 256, 512) определяет активную по умолчанию кнопку. Наконец, четвертая группа (0, 4096) устанавливает модальность сообщения. При добавлении чисел в итоговое значение аргумента кнопки следует использовать только один аргумент из каждой группы.
Приведенные здесь константы определены в Visual Basic для приложений, что позволяет заменять ими числовые значения в любом месте программы.
Возвращаемые значения
Константа | Значение | Описание |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | Отмена |
vbAbort | 3 | Прервать |
vbRetry | 4 | Повторить |
vbIgnore | 5 | Пропустить |
vbYes | 6 | Да |
vbNo | 7 | Нет |
Примечания
Если одновременно указаны аргументы файл_справки и контекст, пользователь может нажать клавишу F1 (Windows) или HELP (Macintosh) для просмотра раздела справки, соответствующего аргументу контекст. Некоторые ведущие приложения, например Microsoft Excel, автоматически добавляют кнопку Справка в диалоговое окно.
Если в диалоговом окне есть кнопка Отмена, ее нажатие равносильно нажатию клавиши ESC. Если в диалоговом окне есть кнопка Справка, для него доступна контекстная справка. Однако до нажатия какой-либо другой кнопки никакое значение не возвращается.
Для указания более одного именованного аргумента необходимо использовать функцию MsgBox в выражении. Чтобы пропустить некоторые из позиционных аргументов, нужно вставить соответствующие запятые.
Пример
В приведенном ниже примере функция MsgBox используется для вывода сообщения о критической ошибке в диалоговом окне с кнопками Да и Нет. Кнопка Нет выбрана по умолчанию. Значение, возвращаемое функцией MsgBox, зависит от нажатой пользователем кнопки. Предполагается, что DEMO.HLP является файлом справки и содержит раздел под номером контекста 1000 .
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник