Прежде чем непосредственно перейти к рассмотрению методов программирования, необходимо вкратце ознакомиться со структурой VBА.
• Код. Действия в VBA осуществляются в результате выполнения кода VBA.
• Модуль. Вы создаете (или записываете) программу VBA, которая сохраняется в модуле VBA. Модуль VBA состоит из процедур.
• Процедуры. Процедура, по существу, представляет собой элемент компьютерной программы, выполняющей определенное действие. В VBA поддерживаются два типа процедур: Sub (подпрограмма) и Function (функция).
• Sub. Процедура Sub включает набор операторов, которые могут вызываться различными способами.
• Function. Модуль VBA может также включать процедуры типа Function. Эта процедура возвращает единственное значение (иногда массив значений) и может вызываться из другой процедуры VBA или использоваться в формуле рабочего листа.
• Объекты. VBA управляет объектами, которые представлены запускающим приложением (в данном случае – Excel). Excel позволяет управлять более чем ста классами объектов, включая рабочую книгу, рабочий лист, диапазон ячеек рабочего листа, диаграмму и нарисованный прямоугольник. В вашем распоряжении находятся и другие объекты, с которыми можно работать в VBA. Классы объектов организованы в иерархическую структуру.
Объекты могут выступать контейнерами других объектов. Например, Excel – это объект под названием Application; он содержит другие объекты, например Workbook и CommandBar. Объект Workbook содержит другие объекты, например Worksheet и Chart. Объект Worksheet может включать такие объекты, как Range, PivotTable и т.д. Совокупность объектов называется объектной моделью Excel.
• Коллекции. Одинаковые объекты образуют коллекцию. Например, коллекция Worksheets включает все рабочие листы в указанной рабочей книге. Коллекция CommandBars включает все объекты CommandBar. Коллекции сами являются объектами.
• Иерархия объектов. При ссылке на объект, вложенный в другой объект, положение в иерархической структуре объектной модели задается с помощью точки-разделителя. Например, на рабочую книгу Книга1.xlsx можно сослаться так:
Application.Workbooks(“Книга1.xlsx”)
При этом устанавливается ссылка на рабочую книгу Книга1.xlsx в коллекции Workbooks. Эта коллекция содержится в объекте Excel под названием Application. Переходя на следующий уровень, можно сослаться на лист Лист1 в книге Книга1:
Application.Workbooks(“Книга1.xlsx”).Worksheets(“Лист1”)
Можно также перейти на уровень ниже и сослаться на отдельную ячейку:
Application.Workbooks(“Книга1.xlsx”).Worksheets(“Лист1”).Range(“A1”)
• Активные объекты. При опущенной ссылке на объект Excel использует активные объекты. Если активной рабочей книгой является Книга1, ссылка записывается в упрощенном виде:
Worksheets(“Лист1”).Range(“А1”)
Если известно, что активным листом является Лист1, ссылку можно упростить еще больше:
Range(“А1”).
• Свойства объекта. Объекты имеют свойства. Свойство может рассматриваться как настройка объекта. Например, объект диапазона имеет свойства Value и Name. Объекту диаграммы присущи свойства HasTitle и Туре. Для определения (изменения) свойств объекта можно использовать VBA. Сослаться на свойство можно, записав объект и свойство, разделенные точкой. Например, сослаться на значение в ячейке А1 листа Лист1 можно так:
Worksheets(“Лист1”).Range(“A1”).Value
• Переменные VBA. Переменным VBA можно присваивать значения. Рассматривайте переменную как имя, которое применяется для хранения определенного значения. Так, если значение в ячейке А1 на листе Лист1 нужно присвоить переменной Interest, используйте следующий оператор VBA:
Interest = Worksheets(“Лист1”).Range(“A1”).Value
• Методы объектов. Все объекты имеют методы. Метод – это действие, которое выполняется над объектом. Например, один из методов объекта Range называется ClearContents. Он удаляет содержимое диапазона ячеек. Методы вводятся после названия объекта с методом, причем в качестве разделителя используется точка. Например, для удаления содержимого ячейки А1 с активного рабочего листа используется следующая конструкция:
Range(“A1”).ClearContents.
• Стандартные конструкции языков программирования. В состав VBA входят все конструкции современных языков программирования, включая массивы, циклы и т.д.
• События. Некоторые объекты распознают определенные события, причем можно создать код VBA, который вызывается при наступлении определенных событий. Например, открытие рабочей книги приведет к вызову события Workbook_Open. Изменение ячейки в рабочей книге приведет к вызову события Worksheet_Change.