- •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. Исправление ошибок
- •Библиографический список
- •Оглавление
73
Private Sub CommandButton2_Click()
Unload Me
End Sub
При использовании данного приложения действия производятся в следующем порядке.
1.Запускается (пользователем или программно) процедура СТАТИСТИКА2.
2.Эта процедура загружает форму СТАТИСТИКА, при инициализации которой выполняется процедура UserForm_initialize.
3.Пользователь выделяет на рабочем листе диапазон значений, на который ссылается элемент управления RefEdit.
4.При нажатии на кнопку ok вызывается процедура CommandButton1_Click, в результате выполнения которой осуществляется подсчёт минимума, максимума и суммы величин выбранного диапазона при помощи свойств Min, Max и Sum объекта WorksheetFunction, представляющие собой одноименные функции рабочего листа и которые выводятся на экран при помощи функ-
ции MsgBox (рис. 33).
Рис. 31. Результаты выполнения приложения СТАТИСТИКА
5.При нажатии на кнопку Выйти выполняется процедура CommandButton2_Click,в результате чего форма СТАТИСТИКА выгружается.
2.11.2.13.Элементы управления на рабочем листе
Выше было указано, что элементы управления можно размещать в пользовательских формах и непосредственно на рабочем листе, создавая тем самым дружественный пользователю интерфейс. Панель инструментов Элементы управления отображается на рабочем листе Excel коман-
дой Вид | Панели инструментов | Элементы управления (рис. 36):
Рис. 32. Элементы управления на рабочем листе
Кроме панели инструментов Элементы управления в Excel имеется похожая на неё панель Формы, набор кнопок которой практически такой же, как на панели Элементы управления (рис. 37).
74
Рис. 33. Панель Формы
Удобство этой панели состоит в том, что многие её кнопки можно связать с макросами (процедурами) VBA. Кроме того, после размещения элемента управления панели Формы на рабочем листе на этом элементе выводится на русском языке её название, отражающее её назначение: Кнопка, Метка и т.д. Для размещения элемента управления на рабочем столе нужно нажать на соответствующую кнопку панели инструментов Элементы управления или Формы и с появившимся крестообразным курсором начертить элемент управления на рабочем листе (рис. 38 а,б).
Рис. 34 а. Примеры элементов управления панели Формы
Рис. 34 б. Примеры элементов управления панели Элементы управления
Следует отметить, что задание свойств элементам управления обеих панелей различаются, т.к. панель инструментов Формы унаследована от устаревшей версии MS Ecsel 5.0 и используется преимущественно совместимости приложений, созданных в старых версиях.
Размещение элементов управления производится в режиме конструктора, для перехода в который нужно нажать кнопку Режим конструк-
тора панели инструментов Элементы управления.
Как было показано выше, элементы управления являются объектами, и как любые другие объекты обладают свойствами, методами и событиями. Значения свойств элементов управления устанавливаются как в коде, так и так и на этапе их конструирования. Для установки значений свойств на этапе конструирования нужно выбрать элемент управления и нажать кнопку Свойства панели инструментов Элементы управления. На экране отобразится окно Properties (рис. 39).
75
Рис. 35. Окно Properties
Код процедуры, обрабатывающий события, связанные с элементом управления, расположенном на рабочем листе (Лист1, Лист2 и т.д.), набирается в модуле этого рабочего листа (Лист1(Лист1), Лист2 (Лист2), и т.д.), на котором расположен элемент управления. Для входа в этот модуль нужно выбрать элемент управления и нажать кнопку Исходный текст панели инструментов Элементы управления.
По окончании конструирования элемента управления необходимо выйти из режима конструирования, нажав кнопку Режим конструктора.
Properties
В качестве примера рассмотрим проектирование на рабочем листе элемента управления Кнопка. Последовательность действий следующая.
1.Нажать кнопку Режим конструктора панели инструментов Эле-
менты управления.
2.Нажать кнопку панели инструментов Элементы управления и на-
рисовать на рабочем листе кнопку , на поверхности которой появится надпись CommandButton1. При создании второго элемента управления Кнопка на её поверхности появится надпись
CommandButton2 и т.д.
3.Щёлкнуть по созданной кнопке правой кнопкой мыши и в появившемся диалоговом окне выбрать пункт Свойства панели инструментов Элементы управления. На экране появится окно Properties. Установить в этом окне значение свойства Name равным КнПривет, а свойства Caption равным ПРИВЕТСТВИЕ.
4.Выбрать созданную кнопку и щёлкнуть по кнопке Исходный текст панели инструментов Элементы управления. В результате произойдёт переход в редактор VBA и автоматически создана первая и последняя инструкция обработки события Click кнопки, возникающего при её нажатии (щелчке):
Private Sub CmdПривет_Click() End Sub
5.Добавить в процедуру обработки события Click функцию MsgBox, которая отобразит на экране диалоговое окно с приветствием (рис. 40):
76
Private Sub CmdПривет_Click()
MsgBox "Желаем вам успехов" & Chr(13) + Chr(10) & _
"в изучении VBA!", vbExclamation
End Sub
Рис. 36. Результат выполнения процедуры CmdПривет_Click
В этой процедуре выражение Chr(13) + Chr(10) вызывает возврат каретки и перевод строки. Вместо него можно использовать смешанную кон-
станту vbCrLf.
Такой же самый результат можно получить, используя элемент Кнопка панели элементов Формы (рис. 37). В этом случае последовательность действий следующая.
1.Выполнить команду Вид | Панели инструментов | Формы.
2.Нажать кнопку панели инструментов Формы и нарисовать на рабочем листе кнопку, на поверхности которой появится надпись Кнопка1. При создании второго элемента управления Кнопка на её поверхности появится надпись Кнопка2 и т.д.
3.Щёлкнуть по созданной кнопке правой кнопкой мыши и в появившемся диалоговом окне выбрать пункт Изменить текст и ввести слово ПРИВЕТСТВИЕ, щёлкнуть правой кнопкой мыши и появившемся диалоговом окне выбрать пункт Завершить изменение тек-
ста.
4.Щёлкнуть мышью по любой ячейке рабочего листа вне области кнопки.
5.Вставить в стандартный модуль Module1 следующую процедуру:
Sub ПРИВЕТ ()
MsgBox "Желаем вам успехов" & Chr(13) + Chr(10) & _ "в изучении VBA!", vbExclamation
End Sub
6.Щёлкнуть правой кнопкой мыши по элементу Кнопка ПРИВЕТ на рабочем листе и в появившемся меню выбрать пункт Назначить макрос…
7.В диалоговом окне “Назначить макрос объекту” выбрать макрос
ПРИВЕТ.
Если щёлкнуть теперь по кнопке ПРИВЕТ, то на экран будет выведено диалоговое окно с текстом "Желаем вам успехов в изучении VBA!".