- •Лекция 5. Объектная модель vba
- •Разработка приложений
- •Этапы разработки приложения
- •Определение потребностей пользователя
- •Проектирование приложения
- •Разработка интерфейса
- •Разработка приложения
- •Тестирование и отладка
- •Разработка документации и справочной системы
- •Установка приложения
- •Обновление приложения
- •Объектно-ориентированное программирование
- •Свойства, методы и события
- •Иерархия коллекций и объектов
- •Некоторые полезные свойства объекта Application
- •Работа с объектами Range
- •Задание диапазона
- •Свойства объекта Range
- •Методы объекта Range
- •Примеры работы с объектом Range
- •Параметры свойств и методов в языке vba
Методы объекта Range
Метод |
Описание |
Activate |
Активация указанной ячейки |
Clear |
Очистка диапазона (и содержимое, и формат) |
ClearContents |
Очистка содержимого диапазона |
ClearFormats |
Очистка формата диапазона |
Copy |
Копирование диапазона в буфер обмена или другой диапазон |
CreateNames |
Создание имён для диапазона на основе текстовых данных |
Cut |
Вырезание диапазона (в буфер обмена) или вставка диапазона в другой |
Merge |
Объединение диапазона в одну ячейку |
Select |
Выделение диапазона |
Sort |
Сортировка ячеек диапазона |
Speak |
Озвучивание содержимого ячеек диапазона |
UnMerge |
Разделение объединённой ячейки |
Примеры работы с объектом Range
ActiveCell.RowHeight= 50'Изменяем высоту строки,
'в которой находится активная ячейка
IfRange("A1:A3").MergeCellsThen'Проверяем, что диапазон входит в объединённую ячейку
MsgBox "Merged"
Else
MsgBox "Not merged"
End If
Range("A6").Clear 'Очищаем ячейку A6
Range("C6").ClearContents 'Очищаем содержимое ячейки C6
Range("E6").ClearFormats 'Очищаем форматирование ячейки E6
Range("B2:D10").Cells(2, 3).Value = 66
ActiveCell.Offset(1, 0).FormulaLocal = ActiveCell.FormulaLocal
ActiveCell.Offset(1, 0).FormulaR1C1 = ActiveCell.FormulaR1C1
MsgBox Range("A1:D10").Count
MsgBox Range("A1:D10").Rows.Count
MsgBox Range("A1:D10").Columns.Count
Параметры свойств и методов в языке vba
Многие свойства и методы имеют параметры, которые меняют значение, возвращаемое свойством, и управляют выполнением метода. Например, методы CopyиCutпозволяют указывать диапазон, в который надо скопировать текущий диапазон. МетодCreateNamesпозволяет указывать, откуда брать имена – из верхней или нижней строки диапазона, из левого или правого столбца диапазона. МетодSortимеет 15 параметров, которые позволяют задавать ключевые поля для сортировки, порядок сортировки, указывать необходимость различать строчные и прописные буквы.
Параметры свойств записываются после имени свойства в скобках и разделяются запятыми. Параметры методов записываются после имени метода через пробел и также разделяются запятыми.
Обычно параметры, передаваемые при вызове свойства или метода, должны совпадать с параметрами, указанными в описании свойства или метода, по следующим критериям:
по количеству;
по типу;
по порядку следования.
Однако в языке VBA в отличие от большинства других процедурных языков многие из параметров являются необязательными, т.е. их можно не указывать при обращении к свойству или вызове метода. В этом случае используются так называемые значения по умолчанию, которые подставляются в тот или иной параметр. Чтобы не передавать все параметры, для параметров, которые необходимо задать, указывают имя параметра и затем значение параметра после комбинации символов «двоеточие + равно». При этом параметры можно указывать в любом порядке.
Range("A1:D4").Copy Destination:=Range("E5:H9")
expression.CreateNames(Top, Left, Bottom, Right)
Range("A1:E4").CreateNames True, False, False, False
Range("A1:E4").CreateNames Left:=True
Range("A1:E4").CreateNames , True
Рассмотрим более подробно параметры свойства Address.
expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
Имя |
Обязательный |
Тип |
Описание |
RowAbsolute |
нет |
Variant |
Если значение параметра равно True (по умолчанию), возвращается абсолютная ссылка на строку. |
ColumnAbsolute |
нет |
Variant |
Если значение параметра равно True (по умолчанию), возвращается абсолютная ссылка на столбец. |
ReferenceStyle |
нет |
XlReferenceStyle |
Формат ссылки – xlA1 (по умолчанию) для ссылок в формате А1, xlR1C1 – для ссылок в формате R1C1. |
External |
нет |
Variant |
Если значение параметра равно False (по умолчанию), возвращается локальная ссылка. В противном случае возвращается внешняя ссылка, т.е. ссылка, содержащая имя файла и имя листа. |
RelativeTo |
нет |
Variant |
Параметр задаёт диапазон, относительно которого указывается ссылка. Имеет значение только для относительных ссылок в формате R1C1. |
Set mc = Worksheets("Лист1").Cells(1, 1)
MsgBox mc.Address '$A$1
MsgBox mc.Address(RowAbsolute:=False) '$A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1) 'R1C1
MsgBox mc.Address(RowAbsolute:=False, ColumnAbsolute:=False, ReferenceStyle:=xlR1C1, _
RelativeTo:=Worksheets("Лист1").Cells(3, 3)) 'R[-2]C[-2]
MsgBox mc.Address(RowAbsolute:=False, ColumnAbsolute:=False, External:=True) '[Книга1.xlsm]Лист1!A1