- •2.1. Алфавит и словарь языка
- •2.2. Переменные
- •2.3. Константы
- •2.4. Строковые переменные
- •2.5. Массивы
- •2.6. Пользовательские типы данных
- •2.7. Операции VBA
- •2.8. Объектная модель Excel
- •2.8.1. Свойства и методы объектов
- •2.8.2. Отображение объектной модели Excel
- •2.8.2.1. Иерархия объектной модели
- •2.8.2.2. Ссылка на объекты в коде VBA
- •2.8.3. Работа с объектами
- •2.8.3.1. Задание свойств объекта
- •2.8.3.2. Использование методов объекта
- •2.8.3.3. Переменные-объекты
- •2.8.3.4. Коллекции
- •2.8.3.5. Метод Add
- •2.8.3.6. Свойство Count
- •2.8.4. Свойства и методы основных объектов Excel
- •2.8.4.1. Объект Application
- •2.8.4.2. Объект Worksheet
- •2.8.4.3. Объект Range
- •2.8.5. Просмотр объектов
- •2.8.6. Использование справочной системы
- •2.8.6.1. Использование функциональной клавиши F1
- •2.8.6.2. Использование помощника
- •2.9. Ввод и вывод данных
- •2.9.3. Метод InputBox
- •2.9.4. Объединение текстовых строк
- •2.10. Концепция событий Excel
- •2.10.1. Типы событий Excel
- •2.10.2. События объекта Workbook
- •2.10.3. События объекта Worksheet
- •2.10.4. События объекта Application
- •2.10.5. События объекта UserForm
- •2.10.6. События, не связанные с конкретными объектами
- •2.10.6.1. Метод OnKey
- •2.10.6.2. Событие OnTime
- •2.11. Формы пользователя
- •2.11.1. Свойства, методы и события экранных форм
- •2.11.1.1. Некоторые свойства форм
- •2.11.1.2. Некоторые методы форм
- •2.11.1.3. Некоторые события форм
- •2.11.2. Элементы управления
- •2.11.2.1. Элемент управления Label (Надпись)
- •2.11.2.1.1. Окно свойств формы
- •2.11.2.2. Элемент управления CommandButton (Кнопка)
- •2.11.2.3. Элемент управления TextBox (Текстовое поле)
- •2.11.2.4. Элемент управления ComboBox (комбинированный список)
- •2.11.2.5. Элемент управления ListBox (список)
- •2.11.2.6. Элемент управления CheckBox (Флажок)
- •2.11.2.7. Элемент управления ToggleButton (Выключатель)
- •2.11.2.8. Элемент управления OptionButton (Переключатель)
- •2.11.2.9. Элемент управления Image (Рисунок)
- •2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)
- •2.11.2.13. Элементы управления на рабочем листе
- •2.12. Инструкции VBA
- •2.12.1. Оператор присваивания
- •2.12.2. Инструкция Set
- •2.12.3. Циклы
- •2.12.3.1. Инструкция For… Next
- •2.12.3.2. Инструкция While…Wend
- •2.12.3.3. Инструкция Do... Loop
- •2.12.3.4. Инструкция For Each…Next
- •2.12.4. Инструкции перехода
- •2.12.4.1. Инструкция условного перехода If…Then…Else
- •2.12.4.2. Инструкция Select…Case
- •2.12.4.3. Инструкция безусловного перехода GoTo
- •2.12.4.4. Инструкции перехода к обработчику ошибок On Error
- •2.12.4.5. Инструкции прерывания выполнения блока Exit
- •2.13. Функции VBA
- •2.13.1. Встроенные функции
- •2.13.1.1. Математические функции
- •2.13.1.2. Функции преобразования данных
- •2.13.1.3. Функции даты и времени
- •2.13.1.4. Строковые функции
- •2.13.1.5. Примеры использования функций VBA
- •2.13.1.5.1. Удаление ненужных символов
- •2.13.1.5.2. Определение длины строки
- •2.13.1.5.3. Сравнение и поиск строк
- •2.13.1.5.4. Выделение части строки
- •2.13.1.5.5. Форматирование значений данных
- •2.13.2. Функции, определённые пользователем
- •2.14. Файлы VBA
- •2.14.1. Типы файлов в VBA
- •2.14.2. Открытие и закрытие файла
- •2.14.3. Ввод данных в файл последовательного доступа
- •2.14.4. Вывод данных из файла последовательного доступа
- •2.14.5. Работа с файлом произвольного доступа
- •2.15. Создание процедуры
- •2.16. Выполнение процедуры
- •2.17. Сохранение процедуры
- •2.18. Запись последовательности действий пользователя
- •2.19. Просмотр кода макроса
- •3.1. Тестирование и отладка как этап разработки приложений
- •3.1.1. Отладка
- •3.1.1.1. Режим останова
- •3.1.1.2. Использование окна Immediate
- •3.1.1.2.1. Просмотр значений в окне Immediate
- •3.1.1.3. Пошаговое выполнение программ
- •3.1.2. Исправление ошибок
- •Библиографический список
- •Оглавление
38
2.9.Ввод и вывод данных
Вэтом пункте рассматриваются следующие средства ввода и вывода данных при помощи диалоговых окон:
использование функции MsgBox;
использование функции InputBox;
применение метода InputBox;
именование аргументов,
использование объединения текстовых строк.
2.9.1.Функция MsgBox
Функция MsgBox служит для организации диалоговых окон, содержащих какие-либо сообщения. После своего появления на экране окно сообщения ждет, пока пользователь щелкнет на одной из кнопок, присутствующих в окне. В зависимости от того, на какой кнопке щелкнул пользователь, функция возвращает определенное целое число. Функция MsgBox имеет следующий формат:
MsgBox (Prompt [, Buttons] [, Title] [, Helpfile, Context])
Аргументы рассматриваемой функции означают следующее.
Prompt (Приглашение) – обязательный аргумент этой функции. Значением этого аргумента служит строка текста, которая появляется как сообщение в диалоговом окне. Эта строка текста должна быть заключена в двойные кавычки. Круглые скобки в синтаксисе MsgBox указывают на то, что в данном случае MsgBox является функцией, возвращающей какоелибо значение.
Если скобки опущены, то для VBA это признак того, что данное выражение значение не возвращает и результатом выполнения инструк-
ции MsgBox является только вывод диалогового окна.
Все остальные аргументы этой функции не обязательны.
Buttons (Кнопки) – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и способ, каким используется окно сообщения; аргумент необязателен. Значение по умолчанию этого аргумента равняется 0; его можно задать в виде констант VBA или целым числом. Если не указан аргумент Кнопки, то VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка ОК. Аргумент Кнопки позволяет управлять следующими параметрами окна сообщения:
количество кнопок в окне;
типы кнопок и их размещение в окне;
пиктограмма, отображаемая в окне;
какая кнопка назначается кнопкой по умолчанию;
режим окна сообщения.
39
Значения констант, определяющих число и тип кнопок используемого значка, приведены в таблице 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 |
|
|
|
|
40
При написании программ, в которых в зависимости от нажатой кнопки диалогового окна необходимо выполнить определённое действие, вместо возвращаемых числовых значений удобнее использовать следующие константы 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])
41
Если какой-либо аргумент опущен, то необходимо включать в список аргументов отмечающие запятые для следующего в списке аргумента.
Пример
В приведённой ниже процедуре Функция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 "Равно " & Кнопка, , "Возвращаемое значение", если нажата кнопка Да.
42
2.9.2.Функция InputBox
Функцию MsgBox целесообразно использовать в случае, если от пользователя надо получить типа Да–Нет или ОК–Отмена. Если необходимо ввести число или текст, то применяется функция InputBox. Эта функция отображает запрос в диалоговом окне ввода, ожидает ввода пользователем строки (или щелчка по кнопке окна) и возвращает строку из поля ввода окна. Функция InputBox имеет следующий формат:
InputBox(Prompt[, Title] [, Default] [, Xpos] [, Ypos] [, Helpfile, Context])
Эта функция требует обязательного задания только аргумента Prompt. Так же, как и в функции MsgBox, значением аргумента Prompt служит текстовая строка, которая отображается в диалоговом окне ввода в
качестве сообщения. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (Chr (10)) или комбинацию этих символов (Chr( 13) & Chr (10)).
Аргумент title используется для задания текста, который помещается в строке заголовка окна ввода. Если этот аргумент не задан, то в строке заголовка отображается слово Ввод.
Аргумент default задает значение, которое отображается по умолчанию в поле ввода, пока пользователь не введет свое значение. Если этот аргумент опустить, то отображается пустое поле ввода.
Необязательные аргументы xpos и ypos задают положение окна ввода на экране.
xpos – числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали.
ypos – числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если