
- •Федеральное агентство по образованию
- •Введение в vba
- •Объектно-ориентированное программирование
- •Основные понятия
- •Алфавит и словарь языка
- •Переменные
- •Константы
- •Строковые переменные
- •Массивы
- •Пользовательские типы данных
- •Операции vba
- •Объектная модель Excel
- •Свойства и методы объектов
- •Отображение объектной модели Excel
- •Иерархия объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов объекта
- •Переменные-объекты
- •Коллекции
- •Метод Add
- •Свойство Count
- •Свойства и методы основных объектов Excel
- •Объект Application
- •Объект Worksheet
- •Объект Range
- •Просмотр объектов
- •Использование справочной системы
- •Использование функциональной клавиши f1
- •Использование помощника
- •Вывод сообщений и ввод и данных
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Объединение текстовых строк
- •Концепция событий Excel
- •Типы событий Excel
- •События объекта Workbook
- •События объекта Worksheet
- •События объекта Application
- •События объекта UserForm
- •События, не связанные с конкретными объектами
- •Метод OnKey
- •Событие OnTime
- •Формы пользователя
- •Свойства, методы и события экранных форм
- •Некоторые свойства форм
- •Некоторые методы форм
- •Некоторые события форм
- •Элементы управления
- •Элемент управления Label (Надпись)
- •Окно свойств формы
- •Элемент управления CommandButton (Кнопка)
- •Элемент управления TextBox (Текстовое поле)
- •Элемент управления ComboBox
- •Элемент управления ListBox (список)
- •Элемент управления CheckBox (Флажок)
- •Элемент управления ToggleButton (Выключатель)
- •Элемент управления OptionButton (Переключатель)
- •Элемент управления Image (Рисунок)
- •Элемент управления ScrollBar (полоса прокрутки)
- •Элемент управления SpinButton (Счётчик)
- •Элемент управления RefEdit (Поле со свёртыванием)
- •Элементы управления на рабочем листе
- •Инструкции vba
- •Оператор присваивания
- •Инструкция Set
- •Инструкция For… Next
- •Инструкция While…Wend
- •Инструкция Do... Loop
- •Инструкция For Each…Next
- •Инструкции перехода
- •Инструкция условного перехода If…Then…Else
- •Инструкция Select…Case
- •Инструкция безусловного перехода GoTo
- •Инструкции перехода к обработчику ошибок On Error
- •Инструкции прерывания выполнения блока Exit
- •Инструкция передачи управления выполнением процедуры подпрограмме внутри процедуры GoSub… Return
- •Инструкция передачи управления выполнением процедуры на одну из нескольких строк кода On…GoSub и On…GoTo
- •Функции vba
- •Встроенные функции
- •Математические функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Примеры использования функций vba
- •Удаление ненужных символов
- •Определение длины строки
- •Сравнение и поиск строк
- •Функция StrComp
- •Функция InStr
- •Выделение части строки
- •Функция Left
- •Функция Right
- •Функция Mid
- •Форматирование значений данных
- •Функции, определённые пользователем
- •Пример функции
- •Файлы vba
- •Типы файлов в vba
- •Открытие и закрытие файла
- •Ввод данных в файл последовательного доступа
- •Вывод данных из файла последовательного доступа
- •Работа с файлом произвольного доступа
- •Создание процедуры
- •Выполнение процедуры
- •Сохранение процедуры
- •Запись последовательности действий пользователя
- •Просмотр кода макроса
- •Отладка программ
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Исправление ошибок
- •Библиографический список
- •Оглавление
Вывод сообщений и ввод и данных
В этом пункте рассматриваются следующие вывода сообщений на экран дисплея и средства ввода данных с клавиатуры при помощи диалоговых окон:
использование функции MsgBox;
использование функции InputBox;
применение метода InputBox;
именование аргументов,
использование объединения текстовых строк.
Функция MsgBox
Функция MsgBox служит для организации диалоговых окон, содержащих какие-либо сообщения. После своего появления на экране окно сообщения ждет, пока пользователь щелкнет на одной из кнопок, присутствующих в окне. В зависимости от того, на какой кнопке щелкнул пользователь, функция возвращает определенное целое число. Функция MsgBox имеет следующий формат:
MsgBox (Prompt [, Buttons] [, Title] [, Helpfile, Context])
Аргументы рассматриваемой функции означают следующее.
Prompt (Приглашение) - обязательный аргумент этой функции. Значением этого аргумента служит строка текста, которая появляется как сообщение в диалоговом окне. Эта строка текста должна быть заключена в двойные кавычки. Круглые скобки в синтаксисе MsgBox указывают на то, что в данном случае MsgBox является функцией, возвращающей какое-либо значение.
Если скобки опущены, то для VBA это признак того, что данное выражение значение не возвращает и результатом выполнения инструкции MsgBox является только вывод диалогового окна.
Все остальные аргументы этой функции не обязательны.
Buttons (Кнопки) – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и способ, каким используется окно сообщения; аргумент необязателен. Значение по умолчанию этого аргумента равняется 0; его можно задать в виде констант VBA или целым числом. Если не указан аргумент Кнопки, то VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка ОК. Аргумент Кнопки позволяет управлять следующими параметрами окна сообщения:
количество кнопок в окне;
типы кнопок и их размещение в окне;
пиктограмма, отображаемая в окне;
какая кнопка назначается кнопкой по умолчанию;
режим окна сообщения.
Значения констант, определяющих число и тип кнопок используемого значка, приведены в таблице 1, 2 и 3.
Таблица 1. Значения аргумента buttons процедуры MsgBox, определяющие отображаемые кнопки в диалоговом окне
Константа |
Значение |
Отображаемые кнопки |
vbOKOnly |
0 |
|
VbOKCancel |
1 |
|
VbAbortRetrylgnore |
2 |
|
VbYesNoCancel |
3 |
|
VbYesNo |
4 |
|
VbRetryCancel |
5 |
|
Таблица 2. Значения аргумента buttons процедуры MsgBox, определяющие отображаемые информационные значки в диалоговом окне
Константа |
Значение |
Значок сообщения |
VbCritical |
16 |
|
VbQuestion |
32 |
|
VbExclamation |
48 |
|
VbInformation |
64 |
|
Таблица 3. Значения аргумента buttons процедуры MsgBox, определяющие основную кнопку в диалоговом окне
Константа |
Значение |
Номер основной кнопки |
VbDefaultButton1 |
0 |
1 |
VbDefaultButton2 |
256 |
2 |
VbDefaultButton3 |
512 |
3 |
VbDefaultButton4 |
768 |
4 |
При написании программ, в которых в зависимости от нажатой кнопки диалогового окна необходимо выполнить определённое действие, вместо возвращаемых числовых значений удобнее использовать следующие константы VBA, которые делают код программы нагляднее и позволяют избежать ошибок при написании программ.
Константа |
Значение |
Нажатая кнопка |
vbOK |
1 |
OK |
vbCancel |
2 |
Отмена (Cancel) |
vbAbort |
3 |
Прервать (Abort) |
vbRetry |
4 |
Повторить (Retry) |
vbIgnore |
5 |
Пропустить (Ignore) |
vbYes |
6 |
Да (Yes) |
vbNo |
7 |
Нет (No) |
Чтобы не ошибиться при вводе значений аргумента кнопки, используйте список констант, который появляется после ввода знака "+". Знак "+" используется для объединения нескольких констант при задании сложного аргумента кнопки. Например, использование в процедуре выражения
vbYesNoCancel + vbQuestion + vbDefaultButton1
приведёт к появлению кнопок Да, Нет и Отмена (константа vbYesNoCancel), значка (константа vbQuestion) и по умолчанию к использованию первой кнопки (константа vbDefaultButton1).
Примечание
Чтобы просмотреть список всех внутренних констант VBA, необходимо в окне программного кода VBA щёлкнуть левой кнопкой мыши по имени любой константы и нажать клавишу F1. В появившемся окне можно найти все внутренние константы Excel.
Title (Заголовок) – содержит заголовок окна сообщения; аргумент необязательный. Без этого аргумента в заголовке будет выведено имя приложения MS Office, из которого запускается программа на VBA (Excel, Word и т.д.).
Helpfile (Справка) – строковое выражение, содержащее имя справочного файла Windows. Обычно это файл, созданный разработчиком приложения с помощью Windows Help Compiler.
Context (Раздел) – численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.
Аргументы Helpfile и Context не обязательны. Они используются или опускаются вместе.
Аргументы функции необходимо перечислять в том порядке, в каком они размещены в её формате. Следовательно, в функции MsgBox они должны располагаться следующим образом:
Prompt [, Buttons] [, Title] [, Helpfile, Context])
Если какой-либо аргумент опущен, то необходимо включать в список аргументов отмечающие запятые для следующего в списке аргумента.
Пример
В приведённой ниже процедуре ФункцияMsgBox() функция MsgBox используется для:
определения, какая из кнопок: Да, Нет или Отмена – нажата (щёлкнута) в диалоговом окне этой функции;
вывода на экран сообщения, какая кнопка была нажата и наименование примера использования этой функции.
Внутренняя константа vbExclamation используется в процедуре для вывода в окне сообщения символа . Определение значения нажатой кнопки осуществляется при помощи инструкции If…Then…Else, синтаксис которой будет подробно рассмотрен в дальнейшем.
Sub ФункцияMsgBox()
Dim Структура As String
Dim Кнопка As Integer
'
' В переменной Структура задается структура диалогового окна
Структура = vbYesNoCancel + vbQuestion + vbDefaultButton1
' В переменную Кнопка вводится целое число, возвращаемое MsgBox
'при нажатии кнопки Да, Нет или Отмена в окне сообщения функции MsgBox
'
Кнопка = MsgBox("Выбрать Да, Нет или Отмена?", Структура, "Примеры функции MsgBox")
'
' На экране отображается соответствующее сообщение '
' в зависимости от значения переменной Кнопка
‘
MsgBox "Равно " & Кнопка, , "Возвращаемое значение"
If Кнопка = vbYes Then MsgBox "Выбрано Да", vbExclamation, "ПРИМЕР 1"
If Кнопка = vbNo Then MsgBox "Выбрано Нет", vbExclamation, "ПРИМЕР 2"
If Кнопка = vbCancel Then MsgBox "Выбрано Отмена", vbExclamation,"ПРИМЕР 3"
End Sub
Ниже приведены диалоговые окна, выведенные на экран в процессе выполнения процедуры ФункцияMsgBox(). Окна ПРИМЕР 1, ПРИМЕР 2 и ПРИМЕР 3 появляются при нажатии кнопок, соответственно, Да, Нет и Отмена. В окне Возвращаемое значение выводится число 6 при выполнении инструкции MsgBox "Равно " & Кнопка, , "Возвращаемое значение", если нажата кнопка Да.