Мы уже знаем, что VBA (Visual Basic for Applications) – это объектно-ориентированный язык программирования. То есть, в основу программирования на VBA положено такое понятие как объект. Именно через объект мы можем получить доступ к функциональным возможностям того приложения, в котором происходит разработка программы: Word, Excel, PowerPoint, Access и др.
Кроме того, при разработке программы, есть возможность получить доступ к объектам других VBA-приложений и даже создать свои собственные объекты.
Что такое объект в VBA?
Объект – это любая именованная единица, которая объединяет в себе данные и программный код, который использует эти данные и воздействует на них. В таком случае принято говорить, что объект инкапсулирует данные и связанный с ними программный код.
В каждом VBA-приложении присутствует свой уникальный набор объектов, которые имеют свои собственные свойства и методы.
Если говорить о VBA в Excel, то здесь объектом может быть само приложение Excel (Application), рабочая книга (Workbook), листы (Worksheets), ячейки (Cells), диаграммы, экранная форма, кнопка и т.д. Кнопки в панелях инструментов и пункты меню также являются объектами.
Свойства и методы объекта
Свойства представляют характеристики объекта, такие как его цвет (например, цвет заливки ячейки), или размер (например, ширина и высота ячейки) и т.д.
Есть свойства, которые доступны для чтения и для записи, а есть свойства доступные только для чтения. То есть можно либо получить текущее значение свойства, либо установить новое значение свойства.
Методы представляют действия, которые можно выполнить с объектом, такие как изменение его свойств или выполнение определенных операций. Например, с помощью метода Select можно выделить и сделать активной ячейку для последующего изменения её свойств (размера, цвета и т.д.).
Получается, что у каждого свойства есть свои методы.
Например, ячейка А1 на листе книги Excel будет представлена объектом. У этого объекта могут быть свойства, такие как Interior.Color (цвет заливки), или Value (значение) и методы, такие как Select (активация ячейки), Copy (копирование), или Clear (очистить).
Используя эти свойства и методы, мы можем изменить цвет заливки активной ячейки. Например, сделать её жёлтой. Также можно получить индексное значение цвета заливки ячейки и очистить ячейку.
Пример изменения свойств объекта
Sub myObjColor1()
ActiveCell.Interior.Color = vbYellow
End Sub
В данном коде:
- ActiveCell – это активная ячейка, которая является объектом.
- Interior – это объект, который представляет внутреннюю область указанного объекта.
- Color – это свойство, которое задает цвет для объекта Interior.
Пример получения значения свойства объекта
Sub myObjColor2()
Dim n As Integer
n = ActiveCell.Interior.ColorIndex
MsgBox (n)
End Sub
В данном коде:
- n – переменная числового типа в которую мы будем записывать значение свойства ColorIndex.
- ActiveCell – это активная ячейка, которая является объектом.
- Interior – это объект, который представляет внутреннюю область указанного объекта.
- ColorIndex – это свойство устанавливающее, или возвращающее цвет заливки ячейки с помощью числового кода от 0 до 56.
Пример использования методов объекта
Sub myObjColor2()
ActiveCell.Clear
End Sub
В данном коде:
- ActiveCels – это объект (активная ячейка).
- Clear – это метод, который используется для того чтобы удалить содержимое ячейки.
Еще немного про объекты их свойства и методы
Сам по себе объект не представляет большого интереса для программы. Гораздо важнее то, какими свойствами обладает этот объект и какие действия можно совершать над ним.
Действия, которые можно совершать с объектом определяются набором его методов. А свойства конкретного объекта определяют его характеристики.
Управлять характеристиками конкретного объекта можно только с помощью его же методов, которые предоставляют доступ к свойствам этого объекта.
Любые свойства, так же как и переменные, хранят данные определённого типа: числовой, строковый, Boolean и т.д.
Важно!
Значение свойства объекта лучше сохранить в обычной переменной, если вы планируете многократно использовать в программе одно и то же значение некоторого свойства этого объекта. Это ускорит работу вашей программу, потому что VBA извлекает значение обычной переменной значительно быстрее, чем значение свойства объекта.
