Основы VBA
Прежде чем непосредственно перейти к рассмотрению методов программирования, остановимся на предназначении VBA.
■ Действия в VBA осуществляются в результате выполнения кода VBA.
■ Вы создаете (или записываете) программу VBA, которая сохраняется в модуле VBA. процедур.
■ Модуль VBA состоит из процедур.
Процедура, по существу, представляет собой элемент компьютерной программы, выполняющей определенное действие. Ниже приведен пример простой процедуры под названием Test: она вычисляет сумму, а затем отображает результат в окне сообщений:
Sub Test()
Sum =1 + 1
MsgBox “Ответ: ” & Sum
End Sub
■ Кроме процедур Sub, в модуле VBA может использоваться второй тип процедур — функции.
Процедура функции возвращает одно значение (или массив). Функция может быть вызвана из другой процедуры VBA или использоваться в формуле рабочего листа. Далее приведен пример функции с названием AddTwo:
Function AddTwo(argl, arg2)
AddTwo = argl + arg2
End Function
■ VBA управляет объектами, которые представлены запускающим приложением (в данном случае Excel).
Excel позволяет управлять более, чем ста классами объектов, включая рабочую книгу, рабочий лист, диапазон ячеек рабочего листа, диаграмму и нарисованный прямоугольник. В вашем распоряжении находятся и другие объекты, с которыми можно работать в VB А.
■ Классы объектов организованы в иерархическую структуру.
Объекты могут быть контейнерами для других объектов. Например, Excel — это объект под названием Application, он содержит другие объекты, например, Workbook (Рабочая книга). Объект Workbook может состоять из других объектов, например, Worksheet (Рабочий лист) и Chart (Диаграмма). Объект Worksheet также содержит объекты, например, Range (Диапазон), PivotTable (Сводная таблица) и т.д. Организацию таких объектов называют объектной моделью Excel.
■ Одинаковые объекты формируют коллекцию.
Например, коллекция Worksheets состоит из всех рабочих листов конкретной рабочей книги, а коллекция CommandBars — из всех объектов CommandBar. Коллекции — это объекты в себе.
■ При ссылке на объект, вложенный в другой объект, положение в иерархической структуре объектной модели задается с помощью точки-разделителя.
Например, на рабочую книгу с названием Книга1.xls можно сослаться следующим образом:
Application.Workbooks (“Kнигаl.xls”)
■ Это ссылка на рабочую книгу Kнига1.xls в коллекции Workbooks. Коллекция
Workbooks находится в объекте Application. Переходя на следующий уровень, вы
можете сослаться на лист Лист1 в книге Книга1.xls:
Application.Workbooks(“Книга1.xls”).Worksheets(“Лист1”)
Перейдите на один уровень ниже, после чего необходимо сослаться на отдельную ячейку:
Application.Workbooks(“Книга1.xls”).Worksheets(“Лист1”).Range(“Al”)
■ При опущенной ссылке на объект Excel по умолчанию используются активные объекты.
Если книга Лист1 — активная рабочая книга, то предыдущую ссылку можно упростить:
Worksheets(“Лист!”).Range(” Al”)
Если вы знаете, что лист Лист1 — активный, то ссылку можно упростить еще больше:
Range(“A1”)
■ Объекты имеют свойства.
Свойство можно считать параметром или настройкой объекта. Например, объект диапазона имеет такие свойства, как Value (Значение) и Name (Имя). Объект диаграммы обладает такими свойствами, как HasTitle (Заголовок) и Туре (Тип). Вы вправе использовать VBA, чтобы задать свойства объектов и их изменить.
■ Свойства в программном коде отделяются от названия объекта точкой.
Например, вы можете сослаться на значение в ячейке А1 листа Лист1 следующим образом
Worksheets(“Лист!”).Range(“Al”).Value
Если вы любите аналогии, то это примечание для вас. Возможно, оно поможет понять отношения между объектами, свойствами и методами в VBA. В этой аналогии Excel сравнивается с сетью ресторанов быстрого питания.
Основной элемент Excel — объект Workbook (Рабочая книга). В сети ресторанов быстрого питания основным элементом является отдельный ресторан. В Excel вы можете добавлять рабочие книги и закрывать их, и все открытые рабочие книги называют workbook (коллекция объектов workbooks). Аналогичным образом руководство сети ресторанов может открывать новые рестораны и закрывать старые — и все они в сети могут рассматриваться как коллекция объектов Restaurant.
Рабочая книга Excel является объектом, но она также содержит другие объекты, например, рабочие листы, диаграммы, модули VBA и т.д. Более того, каждый объект в рабочей книге может содержать собственные объекты. Например, объект worksheet (Рабочий лист) включает объекты Range (Диапазон), PivotTable (Сводная таблица), Shape (Форма) и т.д.
Продолжим нашу аналогию: ресторан быстрого питания (как и рабочая книга) содержит свои объекты, например, кухню Kitchen, столовое помещение DiningArea и Tables (Коллекция столов). Кроме того, руководство вправе добавлять или удалять объекты из объекта Restaurant. Например, в коллекцию Tables можно добавить дополнительные столы. Каждый такой объект может содержать другие объекты. Например, объекта Kitchen включает объект stove (Плита), VentilationFan (Вентилятор), Chef (Шеф-повар), sink (Раковина) и т.д.
Пока все удачно — аналогия работает. Посмотрим, можно ли продолжить сравнение. Объекты Excel обладают свойствами. Например, объект Range имеет свойства значения Value и имени Name, а объект Shape — свойства ширины Width, высоты Height и Т.д. Объекты в ресторане быстрого питания тоже обладают свойствами. К примеру, объект stove имеет такие свойства, как температуру Temperature и количество конфорок яшп-berOfBurners. У объекта VentilationFan есть собственный набор свойств (TurnedOn (Включен), rpm (Частота вращения) и т.д.).
Помимо свойств, объекты Excel также располагают методами, выполняющими операции над объектом. Например, метод ciearContents удаляет содержимое объекта Range. Объекты ресторана быстрого питания тоже обладают методами. Можно легко представить себе метод changeThermostat (Изменить температуру) объекта stove или метод SwitchOn (Включить) для объекта VentilationFan.
В Excel методы иногда используются для изменения свойств объекта. Метод ciearContents объекта Range изменяет свойство Value объекта Range. Аналотчно, метод ChangeThermostat объекта Stove изменяет его свойство Temperature.
В VBA существует возможность писать процедуры для управления объектами Excel. В рее-, торане быстрого питания руководство может давать указания по работе с объектами в ресторанах (“Включить плиту и переключить вентилятор на максимальный режим”).
■ Вы вправе присваивать значения переменным VBA. Переменную можно считать константой, которая используется для хранения конкретного значения.
Чтобы присвоить значение ячейки А1 листа Лист1 переменной с названием Interest, используйте следующий оператор VBА:
Interest = Worksheets(“Лист1”).Range(“Al”).Value
■ У объектов есть методы.
Метод — это действие, которое выполняется над объектом. Например, один из методов объекта Range — ClearContents. Этот метод удаляет содержимое диапазона ячеек.
■ Методы вводятся после названия объекта с методом, в роли разделителя выступает точка.
Например, для удаления содержимого ячейки А1 активного рабочего листа используется следующая команда:
Range (“Al”).ClearContents
■ VBA также включает конструкции современных языков программирования (в том числе массивы, циклы и т.д.).