Модули VBA
Входящие в
проект VBA процедуры и функции располагаются в
модулях. Различают модули двух типов: стандартные модули и модули класса.
Стандартные
модули (модули программного кода или просто модули) представляют собой
именованные контейнеры, в которых содержатся переменные, доступные различным
процедурам и функциям (общие переменные), и программные единицы (процедуры и
функции), не связанные с конкретными объектами.
Процедуры,
связанные с конкретными объектами (например, выполняющиеся при каждом открытии
на экране некоторой формы), хранятся совместно с этими объектами (в данном
случае — непосредственно в форме).
Модули класса представляют
собой именованные контейнеры, содержащие в себе описания созданного
пользователем класса объектов. Описанные в них переменные определяют внутреннюю
структуру объектов – экземпляров этого класса, а процедуры являются методами
этих объектов.
Работа с
редактором VBA
Работа с
программным кодом VBA ведется с помощью специального
редактора. Чтобы начать работу с ним, выберите команду Сервис > Макрос
> Редактор Visual Basic (Tools > Macro > VBA Editor) — откроется
окно редактора.
Содержание этого
окна зависит от выбора, сделанного с помощью меню Вид (View), однако главным образом приходится работать с показанными на
рисунке панелями и окнами.
О Панель проекта — располагается в левом верхнем углу
окна приложения ниже панели инструментов; предназначена для отображения
объектов, составляющих проект VBA (стиль
отображения соответствует отображению ресурсов в окне Проводника).
О Панель свойств
—
располагается ниже панели проекта (если панель отсутствует на экране, ее можно
включить клавишей F4); здесь можно просматривать и
по необходимости изменять значения свойств объектов, выбранных в панели проекта
(например, имя модуля класса) или окне редактора (например, имя элемента
управления в модуле формы).
О Окно редактора кода — представляет собой
специализированный текстовый процессор для работы с текстами на языке VBA; здесь располагаются вложенные окна документов, содержащие
тексты модулей.
В состав дерева
объектов проекта, которое отображается на панели проекта, входят модули
следующих категорий.
О Объекты приложения.
О Модули форм.
О Стандартные
модули.
О Модули
специализированных классов.
Если в проекте VBA используются модули из других объектных библиотек, то в
состав дерева проектов будут также включены ссылки на эти библиотеки. Если
выполнить двойной щелчок на имени модуля в дереве проекта, в окне редактора
кода появится раскрытое окно документа с текстом выбранного модуля (в нашем
случае — модуля с именем Раскраска). Рассмотрим состав этого окна.
В верхней части
окна документа расположены два раскрывающихся списка: список разделов (слева) и
список процедур (справа). В стандартном модуле есть только один раздел — Общая
область (General). Процедур в
каждом стандартном модуле может содержаться несколько, и нужную процедуру можно
выбрать с помощью раскрывающегося списка. Кроме имен процедур в списке имеется
альтернатива Описания (Declarations). После ее
выбора в окне отображается часть модуля, в которой содержатся описания общих
переменных модуля, не принадлежащих ни к одной из его процедур, констант и
процедур, содержащихся в других модулях или проектах, но использующихся в
процедурах этого модуля. В нашем примере раздел описаний пуст.
В левом нижнем углу окна располагаются две кнопки, переключающие режимы отображения: режим процедуры и режим модуля. В режиме процедуры в окне отображается текст только одной процедуры, в режиме модуля — всех разделов, входящих в него, и всех процедур.
Листинг.
Текст
процедуры, выполняющей выделение цветом отрицательных
значении в столбце таблицы Excel
'Выделение
отрицательных значений в столбце
'желтыми цифрами
на красном фоне
Sub По_красному()
Dim r As Object 'Ячейка
Dim cellN As Integer 'Номер ячейки
'Начинаем со 2
ячейки столбца
cellN = 2
Set r = Range("C:C").Cells(cellN) 'Повторяем,
пока не встретится пустая ячейка
Do Until r.Value = ""
If r.Value < 0 Then
'Устанавливаем
желтые цифры на красном фоне
With r
.Font.Color = vbYellow
.Interior.Color = vbRed
End With
Else
'Устанавливаем
черные цифры на белом фоне
With r
.Font.Color = vbBlack
.Interior.Color = vbWhite
End With
End If
'Переходим к следующей ячейке
cellN = cellN +1
Set
r = Range("C:C").Cells(cellN)
Loop
End Sub