Программирование в Visual Basic реализуется на основе объектно-ориентированного программирования (ООП) и его применения в Excel. Для того чтобы использовать элементы программирования Visual Basic в Excel необходимо определить понятие: объект, свойства объекта, методы, объектов и их использование в программе.
ООП – это наиболее современный стиль в разработке компьютерных программ. Этот стиль используется потому, что современное конструирование программы пытается добиться определенных специфических целей. Программа должна быть: проверяемой, модернизируемой, повторно используемой, переносимой.
Все эти требования выдерживаются, если используется принцип модульности программ. Модульные программы при разработке разбиваются на отдельные части, именуемые модулями. Каждый модуль выполняет специфические, строго определенные функции преобразования и имеет доступ только к тем данным, которые необходимы для данного преобразования. Код модуля (программа модуля), разработанный со строго определенным интерфейсом для других модулей программы, легок в отладке, сопровождении и понимании. Другим аспектом модульности является его замкнутость, придающая уверенность в том, что любые изменения в коде модуля окажут влияния только на функции этого модуля и ни на что другое.
ООП максимально использует принцип модульности. Программный объект в ООП называют «контейнером». Контейнер включает в себя данные и код, который знает, как манипулировать этими данными.
Объект – совокупность данных вместе с программным кодом, предназначенным для их обработки.
Другими словами, программный объект (контейнер) – это блок, состоящий из кода и данных.
Он может быть представлен как физический объект, например, в виде кнопки или меню. Программный объект обладает специфической функцией преобразования и содержит специфический код и необходимые данные для реализации этой функции, но его внутренняя работа скрыта от пользователя.
В более традиционном программировании компьютерная программа разрабатывается в виде функциональных наборов строк, в которых блоки данных передаются от модуля к модулю, и каждый модуль модифицирует или использует их по своему усмотрению. Модули не содержат данных, а только кода их модификации переданных данных. Если программа случайно передает неверные данные, процедура все равно их обработает и возвратит «мусор» или вообще вызовет аварию вашей системы.
В ООП данные и код объединены в единой структуре, называемой объектом. Вместо того, чтобы передавать данные из модуля в модуль для выполнения вычислений, объекту посылается сообщение, которое содержит эти данные. Передать объекту плохие данные невозможно, т.к. все данные находятся внутри объекта.
Общими примерами объектов Visual Basic и Excel служат таблицы, области ячеек, командные кнопки, текстовые окна, рабочие папки, диаграммы и модули. Программный объект обладает определенными свойствами и методами.
Свойства - это видимые характеристики объекта. Свойства объекта определяют его внешний вид и поведение.
Методы - это операции преобразования этих данных.
Видимые характеристики – это данные, которые могут быть доступны вне объекта. Свойствами считаются данные, которыми объект манипулирует или которые позволяют контролировать, как выглядит объект или как он себя ведет. Например, свойство Value текстового окна – это текст, который вводится в окно.
Когда выполняется метод, он может изменить значения лишь свойств данного объекта, но не других объектов. Метод может только запросить какой-нибудь объект об изменении некоторого свойства.
Вызвать объект, также как процедуру невозможно. Для изменения свойства объекта или выполнения одного из методов, объекту следует послать сообщение. Например, для выполнения операции над данными объекта указывается
Имя объекта. Метод,
а для изменения некоторого свойства
Имя объекта. Свойство=значение.
Пусть имя объекта Power, который имеет свойство Value, тогда возможно изменение этого свойства с помощью инструкции:
Power. Value = 3 ‘Свойство Value –значение – будет равно 3
либо запоминание значения характеристики объекта в переменной
X = Power. Value ‘В переменную x помещается значение свойства value.
Существуют десятки и даже сотни разнообразных объектов в VBA. Однако некоторые из них будут встречаться практически на каждом шагу. Некоторые из них приведены в табл. 4.1.
Таблица 4.1
Объекты VBA Excel
Класс объектов | Описание объекта |
Application (приложение) | Этот объект представляет собой само приложение Excel, в целом включает в себя все встроенные функции MS Excel. |
Workbook (рабочая книга) | Определяет состояние рабочей книги, например, является ли она открытой для чтения, или какой из методов является активным в настоящий момент. Этому же классу принадлежит объект ActiveWorkBook – представляет активную в настоящий момент книгу. |
Worksheets (рабочий лист) | Объект используется при копировании или удалении рабочих листов, их скрытии или показе, проведение вычислений для формул рабочего листа. Этому же классу принадлежит объект ActiveWorkSheet - это объект, который представляет собой активный в настоящее время рабочий лист. |
Window (окно) | Объект этого класса используется при свертке или развертке окна, разбиении его на части и фиксировании подокон. ActiveWindow – представляет активное окно |
Range (интервал) | Объект этого класс позволяет изменять свойства интервала ячеек, например, используемый шрифт, проверять или изменять содержимое ячеек, вырезать или копировать интервал и т. д. Это наиболее часто используемый класс объектов. К этому же классу относятся объекты: ActiveСell - активная ячейка. Отдельно взятая ячейка представляет собой частный случай Range. |
Как уже было сказано, каждый объект имеет целый ряд присущих ему характеристик или свойств. Некоторые из них приведены в табл. 4.2
Таблица 4.2
Свойства некоторых объектов VBA
Объект | Свойство | Описание |
Application | ActiveWindow ActiveWorkBook ScreenUpdating StandardFont | Активное окно Активная рабочая книга Имя стандартного шрифта для новых рабочих листов |
WorkBook | ActiveSheet FullName Name Saved | Активный рабочий лист Полное имя рабочей книги, включая путь. Имя рабочей книги. Признак того, что состояние рабочей книги сохранено на диске (имеет значение False, если в книге сделаны изменения) |
Worksheet | Name Previons ProtectContents Visible | Имя рабочего листа Предыдущий рабочий лист Режим защиты содержимого ячеек рабочего листа. Режим видимости рабочего листа (скрыт или показан). |
Window | ActiveCell DisplayGridlines Selection Visible WindowState | Активная ячейка Режим отображения линий сетки Текущий выделенный объект. Режим видимости окна. Режим отображения окна (свернуть окно, полноэкранный режим, нормальный размер) |
Range | Column Font Formula Name Row Value Worksheet | Первый столбец интервала Используемый в интервале шрифт Формула интервала Имя интервала Первая строка интервала Значение ячейки Рабочий лист |
Приведем несколько примеров, в которых показано как определяются (устанавливаются свойства объектов):
1) установить в активной ячейке шрифт размером в 14 пт.
ActiveCell.Font.Size=14
где Size – свойство объекта Font;
2) установление в активной ячейке шрифта с названием Courier New Cyr
ActiveCell.Font.Name = «Courier New Cyr»
где Name – свойство объекта Font;
3) установление в активной ячейке для шрифта начертание – курсив
ActiveCell.Font.Italic=True.
Кроме того, каждый объект имеет присущие ему методы (Метод – описывает действие, которое можно совершить над объектом). Некоторые методы объектов представлены в табл. 4.3.
Таблица 4.3
Таблица некоторых методов объектов VBA
Объект | Метод | Описание |
Application | Quit Undo | Завершение MSExsel Отменяет последнее выполнение действия |
Workbook | Activate Close Save SaveAs | Активизирует рабочую книгу. Закрывает рабочую книгу. Сохраняет рабочую книгу. Сохраняет рабочую книгу под другим именем. |
Worksheet | Activate Calculate Delete Protect Unprotect | Активизирует рабочий лист. Заново вычисляет значение рабочего листа. Удаляет рабочий лист. Защищает рабочий лист. Отменяет защиту рабочего листа. |
Window | Activate Close | Активизирует окно. Закрывает окно. |
Range | Clear ClearContents ClearFormats Offset Select | Полностью очищает интервал с форматированием. Очищает содержимое ячейки. Очищает форматирование ячейки. Возвращает интервал, с указанным смещением относительно первоначального интервала. Выделяет интервал |
Рассмотрим решение нескольких задач.
Задача 4.1
Получить информацию об имеющихся свойствах рабочей книги: количество листов в книге, имя книги и имя третьего листа этой книги. Результат вывести в ячейки рабочего листа.
Решение
Sub Info()
'Подсчет количества листов и результат помещается в B1
Worksheets("Лист1").Range("B1").Value =Worksheets.Count
'Определяет имя активной книги и помещается в B2
Worksheets("Лист1").Range("B2").Value=AktiveWorkBook.FullName
'Определяет имя третьего листа книги и помещает в B3.
Worksheets("Лист1").Range("B3").Value = Worksheets(3).Name
End Sub
Задание 4.1
Написать код, используя объекты и методы, который пересчитывает количество листов в текущей книге, прибавляет ещё один лист и последний лист называет «Привет», на новый лист выводит размер шрифта, имя шрифта.
Указание
Метод добавления: add.
Задание 4.2
Написать код, удаляющий последний лист из книги.
Информация
Одними из основных объектов Microsoft Excel являются рабочая книга и рабочий лист.
Создавая, открывая или сохраняя файл в Microsoft Excel, фактически создается, открывается и сохраняется рабочая книга. Для работы с рабочей книгой в Visual Basic используются методы объекта WorkBook или набора WorkBooks.
Инструкция With
Инструкция With позволяет выполнить последовательность инструкций над указанным объектом, не повторяя задание имени объекта. Например, если имеется несколько свойств, которые необходимо изменить для одиночного объекта, то удобнее поместить инструкции присвоения свойств внутрь управляющей структуры With, указав ссылку на объект один раз, вместо того, чтобы ссылаться на объект при каждом присвоении его свойств.
With < объект>
<инструкции>
End With
где With,End With – ключевые слова,
< объект> – любой объект Excel,
<инструкции> – инструкции VBA, использующие свойства и методы < объекта>. Каждая инструкция должна начинаться с точки.
Следующий фрагмент программы устанавливает для диапазона А1:С8 полужирный шрифт красного цвета с высотой символов 20пт и не использует инструкцию With.
Range(“ А1:С8 ”).Font.Bold=True
Range(“ А1:С8 ”).Font.ColorIndex=3
Range(“ А1:С8 ”).Font.Size=20
Следующий пример демонстрирует использование инструкции With для присвоения значений нескольким свойствам одного объекта.
With Range(“А1:С8”).Font
.Bold=True
.ColorIndex=3
.Size=20
End With
Формы как объект
VBA позволяет организовать удобный и интуитивно понятный интерфейс пользователя с данными при помощи форм.
Формы – это объекты, которые обладают свойствами, определяющими их внешний вид, методами, определяющими их поведение, и событиями, которые определяют их взаимодействие с пользователем. Установкой свойств формы и разработкой кода VBA для отклика формы на события создается объект, удовлетворяющий требованиям определенного приложения.
Элементы управления – это объекты, содержащиеся внутри объектов-форм. Каждый тип элемента управления имеет свой собственный набор свойств, методов и событий, что делает его пригодным для определенной цели. Некоторые элементы управления, используемые в приложениях, лучше всего подходят для ввода или отображения текста. Другие элементы управления обеспечивают доступ к другим приложениям и данным процессов таким образом, как будто бы удаленное приложение является частью самого приложения.
Таким образом, формы – это специальные объекты в виде бланков с размещенными на них элементами управления(текстовые поля, кнопки, флажки, списки и т.д.), предназначенные для организации пользовательского интерфейса и позволяют создавать разнообразную форму ввода и вывода информации, проверять и корректировать вводимые данные.
VBA обладает встроенным набором элементов управления. Используя это набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями.
Создание элементов управления на рабочем листе или в форме, как правило, происходит на начальном этапе конструирования приложения. Иногда используется программное их создание в процессе приложения. Но этот подход применяется реже.
Для размещения элемента управления на листе или в форме нажмите соответствующую кнопку панели инструментов Элементы управления и с помощью мыши перетащите рамку элемента управления в нужное место. После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена и вставлять из буфера.
Элемент управления | Имя | Кнопка для создания элемента |
Поле | TextBox | |
Надпись | Label | |
Кнопка | CommandButton | |
Список | ListBox | |
Поле со списком | ComboBox | |
Полоса прокрутки | ScrollBar | |
Счетчик | SpinButton | |
Переключатель | OptionButton | |
Флажок | CheckBox | |
Выключатель | ToggleButton | |
Рамка | Frame | |
Рисунок | Image | |
RefEdit | RefEdit | |
Набор страниц | MultiPage | |
Набор вкладок | TabStrip |