Все
Примеры объектов: , , диаграмма , рамка Border. Доступ к интервалам ячеек возможен только как к объектам Range, например, объект Range("A1") представляет ячейку A1. Каждый элемент меню, каждая
С точки зрения программирования в среде VBA объект обладает свойствами и методами. Свойства описывают объект, а методы позволяют управлять объектом.
В VBA возможны три типичные действия c объектами:
Подробно структура объектов, синтаксис свойств и методов, перечень событий рассмотрены в разделе Microsoft Excel Object Model книги под названием Microsoft Excel Visual Basic Reference справочника по VBA (Help).
Свойства объекта это имеет 52 свойства.
Свойства делятся на две группы:
accessors ), представляющие вложенные объекты;terminals ), задающие характеристики объекта или его состояние.Свойства-участники позволяют добраться до объекта, находящегося на любом уровне вложенности. Например, в записи Application.ActiveWorkbook свойство ActiveWorkbook позволяет получить доступ к объекту приложения - активной ActiveWorkbook.ActiveSheet свойство ActiveSheet означает доступ к объекту
Изменение значений терминальных свойств - это один из способов изменить внешний объект.
Свойства имеют статус:
Read-Write (далее R/W ) предполагает возможность изменения свойства;Read-Only (далее R/O ) означает, что можно только протестировать значение свойства.Некоторые свойства являются общими для многих объектов и для разных объектов могут иметь разный статус, например, Height, Width, являющиеся свойствами интервалов, окон и приложения. В дальнейшем указывается статус и
В качестве значений свойств могут использоваться константы с префиксом xl, например, константа xlCalculationManual устанавливает ручной пересчет таблицы.
| Свойство | Объект | Примеры | Описание |
|---|---|---|---|
Bold, |
Font |
ActiveCell.Font.Bold=True
|
Устанавливает полужирный шрифт. Отменяет курсив. |
Column, Row (R/W Long) |
Range |
Debug.Print
|
В окне Immediate будут распечатаны номер первой колонки и номер первой строки интервала ячеек B3:C5 - "2 3" |
ColumnWidth (R/W |
Range |
Range("A1:B5").ColumnWidth=15 |
Ширина каждой колонки объекта Range 15 символов |
Height, Width (Double) |
Многие объекты | Application.Width=200 (статус R/W)
|
Ширина окна приложения 200 пт. Возвращает суммарную высоту строк объекта |
RowHeight (R/W |
Range |
Range("A1:B5").RowHeight=15 |
Устанавливает высоту каждой строки объекта Range в пунктах |
|
Range |
Range("A2"). |
В ячейку А2 записывается формула |
Value (R/W |
Range |
Range("A3").Value=6.28 |
Значение ячейки устанавливается равным 6,28 |
Count (R/O Long) |
Группа объектов | N= |
В переменную N записывается количество элементов |
Name (String) |
Многие объекты | ActiveSheet.Name="Nw_Sh"(статус R/W)
|
Активному листу присваивается новое имя. Переменной |
|
Многие объекты | P_t= Range("A1:B5").для объекта |
Возвращает объект обычно другого типа, который является объектом более высокого уровня по отношению к указанному объекту |
Свойства объектов изменяются при помощи
Синтаксис object.property=expression
object - ссылка на объект, над которым совершается действие;property - название свойства, значение которого необходимо изменить;expression - выражение, представляющее новое значение свойства объекта.Важно
Например, оператор ActiveCell.Font. Bold="b" является ошибочным, так как свойство Bold имеет тип Boolean и может принимать значения только True или False.
Пример
Процедура изменяет размеры активного окна приложения. Ширина и высота окна приложения вводятся в диалоге. Свойства Height и Width для объекта Window имеют статус R/W, но эти свойства нельзя изменять, если размер окна минимизирован или максимизирован. Поэтому первоначально в процедуре свойством устанавливается обычный размер окна
(рис 8.1) Процедура изменяет размеры активного окна приложенияПри помощи
Синтаксис
variable=object.property
variable - переменная или свойство некоторого объекта;object - ссылка на объект, свойство которого запоминается или тестируется;property - название свойства, значение которого необходимо получить.Важно
Примеры
Свойство возвращает
(рис 8.2) Процедура распечатки названия рабочего листа c активной ячейкойВ процедуре тестируется свойство Value объекта Range - ячейки A1. В случае отрицательного числа цвет заливки ячейки - синий.
(рис 8.3) Процедура тестировния свойства Value объекта RangeПри нулевом значении заливка ячейки отменяется (константа xlNone ). При положительном значении устанавливается цвет заливки, предусмотренный по умолчанию (константа xlAutomatic ).Методы - это действия, которые выполняются с объектом. Методы могут влиять на значения свойств.
Важно
InputBox класса Interaction и метод InputBox класса Application.Синтаксис вызова метода без аргументов
object.method
например, ActiveCell..
Вызов метода с аргументами имеет две формы:
variable=object.method(arguments ) - object.method arguments - операторная форма вызова (аргументы записываются через пробел после названия метода).Если метод использует несколько аргументов, то они перечисляются через запятую.
Аргументы можно задавать, используя позиционное или произвольное расположение.
ЗАПОМНИТЕ
Каждый объект имеет свои Delete может удалять графический объект и
Структура объектов достаточно сложна. Модель объектов показывает структуру объектов и их взаимосвязи.
(рис 8.4) Модель объектов MS Excel (фрагмент)Нажатие на выбранный объект отображает на экране статью, посвященную объекту, в которой ниже имени объекта, как правило, расположены три гиперссылки, позволяющие просмотреть свойства ( Properties ), методы ( Methods ) и события ( Events ) выбранного объекта с соответствующими примерами. В дополнение можно раскрыть список рекомендуемых для просмотра объектов ( See Also ). Нажатие на Multiple objects показывает перечень исходных объектов или перечень вложенных объектов.
(рис 8.5) Фрагмент статьи, посвященной объекту WorkbookОбъекты приложения связаны между собой, и модель объектов отражает иерархические связи между объектами.
Модель объектов содержит простые объекты и Collection ) объединяет группу подобных объектов.
является коллекцией всех открытых книг - объектов , а - коллекцией . Примерно половина всех объектов MS Excel - это
Процедуры могут обращаться как к отдельному элементу коллекции (к объекту или к объекту ), так и ко всем объектам коллекции одновременно (к объекту или к объекту ).
указывает на первую указывает на лист с именем Sheet2.
Объекты приложения могут включать в себя объекты разных типов. Например, container ), в котором содержится объект.
Самый старший Application. Приложение - это контейнер для всех открытых и коллекции .
Преимущества
Если в Sheet1 и Sheet2, то запись указывает на ячейку A1 Sheet1, а запись указывает на ячейку A1 Sheet2.
Объект в VBA указывается при помощи ссылки. Запись указывает на объект, являющийся листом с именем Sheet2 в , отличая его, таким образом, от листа с тем же именем, но в другой
Важно
Для объектов, относящихся к классу globals (например, активная Application можно опустить.
В VBA перед обращением к каждому из методов или свойств объекта требуется наличие ссылки на объект. Конструкция With…End With позволяет применить With. Благодаря этому программа становится менее громоздкой, освобождаясь от повторений ссылки на объект.
Синтаксис оператора
With Object [statements] End With
Object - statements - Первая строка этой структуры идентифицирует объект, с которым будут производиться действия. В последующих операторах используются свойства и методы идентифицированного объекта. Оператор End With является закрывающей скобкой для оператора With. Часто подобная структура записывается при помощи
Внимание
statements начинается с точки.Чтобы получить доступ к свойствам или методам объекта, можно использовать два способа: прямое указание на объект и применение
Например, установить полужирный шрифт для первой строки активного листа можно оператором ActiveSheet.Rows(1).Font.Bold = True или, используя объектную переменную, можно предложить два способа записи:
![]() |
![]() |
Здесь оператор Set создает объект, тип которого установлен при описании Range, во втором случае - тип объекта Font.
Преимущества
При открытии MS Excel автоматически становится доступным объект Application с его свойствами и методами. Объект Application - корневой объект приложения. В него вложены остальные объекты приложения. Доступ к ним осуществляется посредством свойств-участников объекта Application.
Для создания ссылки на объект Application используется свойство Application.
Application.Windows(" |
Оператор активизирует |
Application. |
Оператор выделяет интервал ячеек на активном |
Многие свойства объекта Application используются без ссылки на объект Application, так как они возвращают объекты, относящиеся к классу globals.
Свойства, название которых начинается со слова Active, возвращают Application, так как они входят в класс globals. Некоторые из этих свойств являются одновременно свойствами нескольких объектов.
| Свойство | Объект | Действие | Возвращаемый объект |
|---|---|---|---|
ActiveCell |
|
Возвращает |
Range |
ActiveSheet |
|
Возвращает активный лист. Это может быть |
|
ActiveWorkbook |
Application |
Возвращает активную |
|
ActiveWindow |
Application |
Возвращает активное окно | Window |
Selection |
|
Возвращает выделенный объект | Различные типы объектов |
Так как перечисленные в таблице свойства возвращают объекты, при записи операторов для
| Оператор | Комментарий |
|---|---|
ActiveCell.Font.Bold=True |
Устанавливает полужирный шрифт текста активной ячейки |
ActiveSheet.Name="Проба" |
Изменяет название активного листа |
MsgBox ActiveWorkbook.Fullname |
Высвечивает полное имя |
Selection.NumberFormat="0.00" |
Устанавливает числовой формат с двумя знаками после запятой для ячеек выделенного интервала |
ActiveCell.Value=10
|
Присваивают |
|
Очищает предварительно выделенный на листе Sheet1 объект, например, интервал ячеек |
Если никакой объект не выделен, то свойство Selection возвращает значение Nothing и очистка не выполняется |
|
|
Высвечивает тип предварительно выделенного на листе Sheet1 объекта |
Во время выполнения программ возможно высвечивание сообщений и запросов MS Excel (встроенных диалоговых окон), на которые пользователь должен реагировать. Например, это может быть запрос на False свойства DisplayAlerts позволяет отключить высвечивание подобных сообщений. При отключении запросов MS Excel выбирает ответ, который установлен в диалоге по умолчанию.
Важно
True, так как MS Excel автоматически его не восстанавливает.![]() |
Процедура закрывает без |
Это свойство обновления экрана разрешает (значение True ) или запрещает (значение False ) изменение экрана при выполнении команд MS Excel.
Если процедура выполняет команды MS Excel, то на экране отображаются все действия с объектами MS Excel: выделение и копирование ячеек, перемещение экрана и т.д. Свойство ScreenUpdating позволяет избежать подобного "мелькания экрана".
Важно
True, так как MS Excel автоматически его не восстанавливает.Это свойство позволяет скрывать или показывать окно приложения. Свойство доступно для многих объектов, например, для объектов формы.
![]() |
Процедура делает видимым окно приложения, если оно не видно или скрывает его, если окно высвечено. |
| Свойства | Описание | Примеры операторов |
|---|---|---|
|
Возвращает или устанавливает параметры вычислений. Задается константами |
Application. задает ручной пересчет |
Application.CalculateBeforeSave=True задает автоматический пересчет перед сохранением файла |
||
Path (R/O String) |
Возвращает |
MsgBox "Путь к приложению высвечивает путь к программе |
SheetsInNewWorkbook (R/W Long) |
Возвращает или устанавливает количество |
MsgBox "В новой высветит количество листов во вновь создаваемой |
ThisWorkbook |
Возвращает объект ThisWorkbook - Свойство |
ThisWorkbook.Close SaveChanges:=False закрывает |
ThisWorkbook.FullName возвращает |
||
For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close savechanges:=True
End If
Next w
Цикл закрывает с |
||
WorksheetFunction |
Возвращает одноименный объект-контейнер функций |
MsgBox "Десятичный логарифм 10^6 равен " WorksheetFunction.Log10(10^6) высвечивает 6 |
Важно
WorksheetFunction или на объект Application.Instr и функция Find.Метод позволяет запустить некоторую процедуру в заданный момент времени.
Синтаксис OnTime(EarliestTime, Procedure[,LatestTime])
EarliestTime - выражение, задающее время запуска процедуры;Procedure - имя запускаемой процедуры;LatestTime - самое позднее время, когда процедура может быть запущена, если невозможно было запустить ее точно в указанное время. Причиной невозможности запуска могло явиться выполнение диалога, который не был прерван ранее.Пример
(рис 8.6) Пример применения метода OnTimeПроцедура mes_time в 16:30 высвечивает сообщение "Пошли пить кофе".
Внимание
LatestTime=EarliestTime + 30, OnTime, не будет запущена вовсе.LatestTime не задавать, то MS Excel дождется завершения процедуры и запустит нужную процедуру.EarliestTime использовать выражение Now()+интервал времени, то процедура запустится спустя указанный интервал от текущего времени.Метод переводит приложение в состояние ожидания до наступления некоторого момента времени. Во время паузы пользователь не может выполнять никакие команды, но операции, выполняемые в фоновом режиме, например, распечатка, не прекращаются.
Синтаксис expression.
expression - возвращает объект Application ;Time - время окончания паузы в выполнении процедуры в формате даты.Пример
Процедура устанавливает паузу примерно на 10 секунд.
Используются , Minute, Second, TimeSerial, Now. С их помощью из текущего времени выделяются час, минуты, секунды; секунды увеличиваются на 10, и составляется время окончания паузы.
(рис 8.7) Пример применения метода Wait
Ссылка на объект коллекции - это название коллекции, после которого в скобках указывается индекс объекта или его имя в кавычках. Например, ссылка выбирает первую из открытых ссылается на "budget".
Важно
Документ MS Excel (. Можно одновременно работать с несколькими .
Свойство объекта Application возвращает объект .
При открытии или создании автоматически добавляется в конец коллекции , а при закрытии книги соответствующий элемент также автоматически удаляется из коллекции.
| Свойства и методы | Примеры операторов и комментарии |
|---|---|
Объект |
|
Свойство Count (R/O Long) |
MsgBox "Число открытых высвечивает число |
Метод Add |
добавляет новую |
Метод Close |
используется без аргументов и закрывает все |
Объект |
|
Свойство Colors |
Свойство, заданное с индексом, указывает на конкретный элемент палитры. ActiveWorkbook.Colors(5) = RGB(255,0,0) заменяет пятый цвет палитры на красный |
| Свойство без индекса возвращает палитру цветов в виде массива из 56 цветов.
|
|
Свойство Name (R/O String) |
MsgBox высвечивает имя последней открытой книги |
Свойство FullName (R/O String) |
MsgBox ActiveWorkbook.FullName возвращает полное имя активной |
Свойство |
ThisWorkbook. возвращает количество элементов в коллекции листов различных типов |
Свойство |
ActiveWorkbook. возвращает имя первого листа в коллекции диаграммных листов активной книги |
Свойство |
активизирует первый лист из коллекции |
Метод Open |
открывает существующую |
Метод Close |
ActiveWorkbook.Close SaveChanges:=True, закрывает перенумеровываются.Параметр |
Метод Activate |
активизирует указанную |
Метод SaveAs |
ActiveWorkbook.SaveAs сохраняет . Если в папка не указана, то файл сохраняется в текущей папке |
Событийные процедуры записываются на процедурном листе, связанном с объектом. Каждый объект имеет свои собственные события.
Чтобы вставить событийную процедуру для объекта
ThisWorkbook (Эта книга) в окне проекта;View Code или сделать двойной щелчок на объект ThisWorkbook ;Workbook ;Open событийная процедура имеет имя Workbook_Open ;Пример
При вставке нового листа в
![]() |
При выборе события NewSheet автоматически появляется новая процедура Workbook_NewSheet с параметром Sh. |
Значение параметра, являющееся ссылкой на объект - новый лист, передается процедуре во время ее выполнения. Метод Move перемещает вставленный лист. Параметр before этого метода определяет новое месторасположение листа - начало
Коллекция представляет собой совокупность листов различных типов - ) и листов диаграмм (коллекция ). Таким образом, каждый элемент коллекции является элементом коллекции или коллекции и наоборот, любой элемент коллекции или коллекции принадлежит коллекции .
| Свойства и методы | Примеры и комментарии |
|---|---|
Объекты , |
|
Свойство Count (R/O Long) |
MsgBox "Количество высвечивает количество |
Метод Add |
добавляет новый лист заданного типа в |
Объекты , , , |
|
Методы Copy, Move |
Копирует, перемещает указанные листы или группу листов в новое место. перемещает первый лист в конец |
Объекты , |
|
Метод Activate |
активизирует указанный |
Метод Delete |
ActiveWorkbook. удаляет первый |
Свойство Name (R/W String) |
Возвращает или устанавливает имя листа. переименовывает последний |
Объекты |
|
Свойство Columns (R/O) |
Возвращает коллекцию столбцов. устанавливает полужирный шрифт для первой колонки первого |
Свойство ScrollArea (R/W String) |
Определяет границы интервала, внутри которого возможно перемещение по ячейкам. При разрешает доступ только к ячейкам A1:F10 |
Свойство |
Возвращает коллекцию - коллекцию графических объектов ActiveSheet. меняет тип первого графического объекта активного листа на "сердечко" |
Свойство Rows(R/O) |
Возвращает коллекцию строк. удаляет третью строку |
Метод |
ActiveWorksheet. производит вычисления во всех ячейках указанного |
Метод CheckSpelling |
Используется для проверки правописания (с аргуменами и без аргументов). ActiveSheet.CheckSpelling ignoreUppercase:= True не проверяет слова, записанные только прописными буквами |
Добавляет новый лист в коллекцию , . При создании содержит столько SheetsInNewWorkbook объекта Application.
Внимание
Add для объектов Workbooks и Sheets имеет различный синтаксис.Cинтаксис метода для коллекций ,
expression.Add([Before] [,After] [,Count] [,Type])
expression - выражение, возвращающее коллекцию WorkSheets или Sheets . Указание обязательно;Count - количество вставляемых листов;Type - тип вставляемого листа. Используются константы: xlWorksheet (по умолчанию), xlChart (только для объекта Sheets ), xlExcel4MacroSheet, xlExcel4IntlMacroSheet.Важно
Before и After указывается ссылка на лист как индекс или имя в коллекции листов, например, Sheets (1) или Sheets ("Лист1")Метод Move используется для перемещения листов.
Синтаксис expression.Move([Before] [,After])
expression - ссылка на объект, представляющий перемещаемый лист. Указание обязательно;before и after (ссылки на лист, см. описание метода Add ) определяют новое местоположение перемещаемого листа. Если не указан ни один из параметров, то лист перемещается во вновь создаваемую Метод Select выделяет объект. При применении к одному листу методы Activate и Select активизируют указанный лист. Но метод Select используется для группировки листов, т.е. для расширения выделения.
Синтаксис expression.Select([
expression - ссылка на объект, представляющий выделяемый лист. Указание обязательно;Replace - для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.Замечание
Array. Например, Sheets (Array("Лист8", "Лист12")).Select.Пример
Процедура перемещает нечетные листы в конец
Чтобы вставить событийную процедуру для объекта :
WorkSheet (например, Лист1 ) в окне проекта;WorkSheet ;При выборе события автоматически вставляется процедура со стандартным именем, которое состоит из названия листа и названия события, разделенных нижним подчеркиванием (_).
Пример
При активизации листа Лист1 в ячейку A1 заноситcя название листа.
(рис 8.8) Пример работы с событийной процедурой объекта WorkSheet
При работе в MS Excel чаще всего выполняются некоторые действия с группой ячеек Range - это отдельная ячейка, целиком строка или столбец
Для задания объекта Range существуют различные возможности. Например, благодаря свойству ActiveCell, Range. Свойство Selection определяет выделенный интервал ячеек в качестве объекта Range.
| Свойства и методы | Применимы к объектам | Примеры и комментарии |
|---|---|---|
Свойство ActiveCell |
Application |
Оператор ActiveCell.Value=10 устанавливает значение активной ячейки равным 10 |
Свойство Areas |
Range |
Оператор Range("A1, B5:B10, C12:C20").Areas(3).Value = 10 устанавливает значение 10 для третьей области объекта Range - для ячеек интервала C12:C20 |
Свойство |
Application, Range, |
Оператор активизирует ячейку C7 и равносилен оператору Range("C7").Select |
Свойство Columns |
Application, Range, |
Оператор Columns("A:D").Select выделяет первые четыре столбца |
Свойство CurrentRegion |
Range |
Оператор ActiveCell.CurrentRegion.Count подсчитывает количество ячеек с данными в интервале, окружающем |
Свойство Offset |
Range |
Операторы Range ("A2:B10").Select, Selection.Offset(2,2).Value=10 устанавливают значение 10 каждой ячейки интервала C4:D12.Равносильно записи |
Свойство Range |
Application, Range, |
Операторы p=Range("A:B").Count, p=Range("налог").Count, p=ActiveSheet.Range("A1: присваивают переменной p количество ячеек в заданных интервалах |
Свойство Rows |
Application, Range, |
Оператор Rows("1:3").Select выделяет первые три строки |
Свойство Selection |
Application |
Оператор Selection.Clear очищает выделенный интервал ячеек |
Метод |
Range |
объединяет два несмежных интервала в один объект Range |
ЗАМЕЧАНИЯ
Range, не активизируя новую ячейку.Activate или Select не активизируют новую ячейку.Свойство Range возвращает объект Range, определяемый аргументами. Используются два разных способа записи свойства Range.
Первый способ object.Range(Cell1)
Второй способ object.Range(Cell1 [,Cell2])
object - ссылка на объект, например, на Cell1, Cell2 - аргументы для задания интервала ячеек. Cell1 - указание обязательно при обоих способах записи свойства Range.Первый способ
Аргумент Cell1 задает интервал ячеек произвольного размера.
Важно
| Запись | Возвращаемый объект |
|---|---|
ActiveSheet.Range("A1: |
интервал ячеек A1: |
Range("A:B") |
столбцы A:B |
Range("налог") |
интервал с именем налог |
Range("1:3") |
строки с первой по третью |
Range("A1: |
объединение двух несмежных интервалов A1: |
Range("A1:C10 B10:D24") |
пересечение двух интервалов A1:C10 и B10:D24, т.е. интервал B10:C10 |
Второй способ
Аргументы задают координаты интервала:
Cell1 - единственная ячейка (строка или столбец), задающая левый верхний угол интервала;Cell2 - единственная ячейка (строка или столбец), задающая правый нижний угол интервала. Необязательный аргумент.Допустимо задание аргументов переменными, выражениями, свойствами или методами, представляющими объект Range - одну ячейку, одну строку или один столбец
| Запись | Возвращаемый объект |
|---|---|
Range("A5","D18") |
интервал A5:D18 |
Range(Columns(1), Columns(5)) |
интервал, содержащий первые пять столбцов |
ЗАПОМНИТЕ
Range применяется к объекту Range, то ссылка на интервал ячеек считается относительной и возвращается смещенный объект Range.Например, если выделен интервал C1:D5, то запись Selection.Range("B2") возвратит ячейку D2.
Свойство возвращает единственную ячейку
Синтаксис object.
object - ссылка на объект. Ссылка необязательна. По умолчанию используется активный лист;RowIndex - индекс строки;ColumnIndex - индекс столбца.ЗАМЕЧАНИЯ
Cells индекс строки является первым аргументом, а индекс столбца - вторым аргументом, тогда как при задании адреса ячейки в стиле A1 сначала указывается столбец, а затем строка.Index, ColumnIndex, RowIndex ) всегда подразумевает целое число, целочисленную переменную или выражение, результат вычисления которого есть целое число или может быть преобразован в целое число.| Запись | Комментарий | Возвращаемый объект |
|---|---|---|
ActiveSheet. |
Свойство без аргументов |
все ячейки активного |
Range("C5:C10"). |
Свойство применяется к объекту Range (относительная ссылка) |
ячейка C5 |
Range( |
Свойство используется в качестве аргументов свойства Range |
интервал ячеек C7:D10 |
Свойство Offset позволяет задавать ячейки или интервалы при помощи числа строк и колонок, которые отделяют нужную ячейку от исходной ячейки, т.е. указывая смещение относительно выбранной ячейки. Например, Range("A5").Offset(-2,1) возвращает ячейку B3.
Синтаксис object.Offset([RowOffset][,ColumnOffset])
object - ссылка на объект Range. Ссылка обязательна и определяет объект, относительно которого задается смещение;RowOffset - смещение строки искомой ячейки относительно исходной ячейки;ColumnOffset - смещение столбца искомой ячейки относительно исходной ячейки.Необязательные аргументы RowOffset и ColumnOffset - числовые выражения. Если какой-то аргумент не задан, то соответствующее смещение равно нулю.
Например, если выделен интервал C1:D5, то запись Selection.Offset(2,1).Select выделяет интервал D3:E7.
Метод используется для объединения двух и более объектов Range, заданных ссылками на непересекающиеся интервалы, в один объект Range.
Синтаксис Object.
object - всегда объект Application. Ссылка необязательна;arg1,arg2 - интервалы ячеек. Количество аргументов произвольно. Обязательно наличие хотя бы двух аргументов.Например, оператор выделяет несмежные интервалы A1:C5 и B10:D12.
Свойство Areas выполняет обратное действие, разделяя объединенные интервалы на несколько объектов Range.
Синтаксис Object.Areas(index)
object - ссылка на объект Range, состоящий из нескольких интервалов;index - номер интервала в объекте. Аргумент необязателен.| Оператор | Комментарий | Результат |
|---|---|---|
p= |
Если аргумент задан, то свойство Areas возвращает интервал - объект Range, определенный индексом интервала |
равен девяти, так как во втором интервале ровно 9 ячеек |
p= |
Cвойство Areas без аргументов рассматривает каждый из несмежных интервалов как элемент Range |
равен двум, так как объект, определенный методом , состоит из двух областей - коллекции из двух элементов |
p=Range("B10:D12").Areas.Count |
равен единице, так как объект Range представляет один элемент коллекции |
Свойства возвращают целое число, показывающее индекс первого столбца или первой строки соответственно для заданного объекта. Синтаксис свойств
object.Column object Row
object - обязательная ссылка на объект Range.Например, запись Range("C5").Column возвращает число 3, а запись Range("C5").Row возвращает число 5.
Свойство Columns (не путайте со свойством Column!) возвращает объект Range, представляющий колонку или коллекцию колонок в объекте, к которому это свойство было применено.
Синтаксис Object.Columns(index)
object - ссылка на объект. Указание необязательно, по умолчанию используется активный index - индекс колонки в объекте.Например, запись Columns(1) возвращает колонку A активного Range("C1:D5").Columns(1) возвращает колонку C заданного интервала, а именно, ячейки C1:C5.
Важно
Range.Columns(2) и Columns("B") указывают на одну и ту же колонку B.Свойство Rows (не путайте со свойством Row!) возвращает объект Range, представляющий строку или коллекцию строк в объекте, к которому это свойство было применено.
Синтаксис Object.Rows(index)
object - ссылка на объект. Указание необязательно, по умолчанию используется активный index - индекс строки в объекте.Важно
Range.Например, оператор nr=Selection.Rows(Selection.Rows.Count).Row позволяет получить номер последней строки в выделенном интервале ячеек.
Свойство CurrentRegion определяет объект Range, который соответствует интервалу ячеек, включающему заданную ячейку.
Пример
В процедуре сравниваются значения первой ячейки первой строки и первой ячейки каждой следующей строки заполненного данными интервала, включающего первую ячейку. Если значения совпадают, то очередная строка удаляется.
Предполагается, что данные начинаются с ячейки A1 и занимают несколько строк и столбцов, при этом расположены не плотно, т.е. внутри интервала с данными могут находиться пустые строки или пустые столбцы. Анализируются только строки заполненного данными интервала ячеек вокруг ячейки A1, не содержащего пустых строк и столбцов.
(рис 8.9) Пример работы со свойством CurrentRegion| Свойства | Примеры и комментарии |
|---|---|
ColumnWidth (R/W |
Возвращает или изменяет ширину колонки в единицах, эквивалентных одному символу в стиле Обычный ( Normal ). Шрифт стиля по умолчанию Arial Cyr и размер шрифта 10.
|
Width (R/O |
Возвращает ширину интервала ячеек в пунктах.
|
RowHeight (R/W |
Возвращает или изменяет высоту строк интервала в пунктах.
|
Height (R/O |
Возвращает суммарную высоту интервала строк, зависящую от названия и размера шрифта. Если шрифт Arial Cyr и размер шрифта 10, то Debug.Print Range("A1").Height распечатает 12,75 и Debug.Print Range("A1:C3").Height распечатает 38,25 |
WrapText (R/W Boolean) |
Range("A1").WrapText=TrueЗначение |
Замечание
Width и Height имеют статус Read-Only для объектов Range, но для других объектов, например, для объекта Window, они имеют статус Read-Write.Метод Select выделяет интервал ячеек.
Синтаксис object.Select(
object - выделяемый объект типа Range. Ссылка на объект обязательна;Replace - для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.Метод Activate активизирует единственную ячейку.
Синтаксис object.Activate
object - активизируемая ячейка. Ссылка на объект обязательна.| Оператор | |
|---|---|
Range("C7:E9").Select |
C7 |
Range("C7:E9").Offset(1,1).Activate |
D8 |
Range("C7:E9").Activate |
C7 |
Range("C7:E9"). |
C8 |
ЗАМЕЧАНИЯ
Select выделяет интервал ячеек, тогда как метод Activate активизирует только одну ячейку.Select первая ячейка интервала становится активной.ActiveCell и Selection возвращают одну и ту же ячейку (объект Range ).Очищает интервал ячеек, изменяя, таким образом, свойство Value каждой ячейки интервала.
Пример
Процедура очищает интервал ячеек или заполняет его единицами в зависимости от значений ячеек. Дополнительно изменяется шрифт и размер шрифта.
(рис 8.10) Пример применения метода ClearНазвание шрифта является обязательным параметром вызываемой процедуры, а размер шрифта - необязательным параметром. Если он не задан, то размер шрифта принудительно меняется на 16.
Вызывающая процедура проверяет, является ли интервал ячеек A1:B5 пустым. Если это не так, то интервал очищается и размер шрифта устанавливается в 16. Если же интервал ячеек пуст, то все ячейки интервала заполняются единицами и размер шрифта интервала ячеек равен 10.
В обоих случаях шрифт ячеек интервала A1:B5 устанавливается в Times New Roman.
Свойство ColorIndex заливки (заливка - это объект Interior, который является вложенным для объекта Range ) рассматривает цвет как номер в палитре цветов
Пример
В ячейках, начиная с активной, отображается палитра цветов
Переменные c и r содержат, соответственно, индекс столбца и индекс строки активной ячейки.
Прямоугольный интервал из 56 ячеек (7 строк и 8 столбцов, начиная с активной ячейки) для отображения палитры задается переменной obj_range, содержащей ссылку на объект Range.
Свойство Pattern (образец заливки) задается константой xlSolid, позволяющей установить заливку активных ячеек.
(рис 8.11) Пример изменения свойства ColorIndex
Свойство относится к объектам Border, Font или Interior (вложенные объекты для объекта Range ) и устанавливает цвет объекта в формате RGB. Свойство можно задать, используя функцию RGB, которая возвращает цвет в виде числа типа Long. Аргументы функции Red, Green, Blue определяют насыщенность соответствующей компоненты в устанавливаемом цвете и изменяются от 0 до 255.
Например, оператор ActiveCell.Interior.Color=RGB(255, 0, 0) устанавливает красную заливку активной ячейки.
Замечание
Color со свойством Colors! Последнее является свойством объекта Workbook и использует палитру цветов ActiveWorkbook.Colors(51) = RGB(255,0,0) меняет 51 цвет палитры активной Чтобы использовать серый цвет разной интенсивности, установите равные аргументы функции RGB, например, выражение RGB(196,196,196) устанавливает 25% серую заливку. Чем больше значения аргументов, тем ближе серый цвет к белому.
Все
Примеры объектов: , , диаграмма , рамка Border. Доступ к интервалам ячеек возможен только как к объектам Range, например, объект Range("A1") представляет ячейку A1. Каждый элемент меню, каждая
С точки зрения программирования в среде VBA объект обладает свойствами и методами. Свойства описывают объект, а методы позволяют управлять объектом.
В VBA возможны три типичные действия c объектами:
Подробно структура объектов, синтаксис свойств и методов, перечень событий рассмотрены в разделе Microsoft Excel Object Model книги под названием Microsoft Excel Visual Basic Reference справочника по VBA (Help).
Свойства объекта это имеет 52 свойства.
Свойства делятся на две группы:
accessors ), представляющие вложенные объекты;terminals ), задающие характеристики объекта или его состояние.Свойства-участники позволяют добраться до объекта, находящегося на любом уровне вложенности. Например, в записи Application.ActiveWorkbook свойство ActiveWorkbook позволяет получить доступ к объекту приложения - активной ActiveWorkbook.ActiveSheet свойство ActiveSheet означает доступ к объекту
Изменение значений терминальных свойств - это один из способов изменить внешний объект.
Свойства имеют статус:
Read-Write (далее R/W ) предполагает возможность изменения свойства;Read-Only (далее R/O ) означает, что можно только протестировать значение свойства.Некоторые свойства являются общими для многих объектов и для разных объектов могут иметь разный статус, например, Height, Width, являющиеся свойствами интервалов, окон и приложения. В дальнейшем указывается статус и
В качестве значений свойств могут использоваться константы с префиксом xl, например, константа xlCalculationManual устанавливает ручной пересчет таблицы.
| Свойство | Объект | Примеры | Описание |
|---|---|---|---|
Bold, |
Font |
ActiveCell.Font.Bold=True
|
Устанавливает полужирный шрифт. Отменяет курсив. |
Column, Row (R/W Long) |
Range |
Debug.Print
|
В окне Immediate будут распечатаны номер первой колонки и номер первой строки интервала ячеек B3:C5 - "2 3" |
ColumnWidth (R/W |
Range |
Range("A1:B5").ColumnWidth=15 |
Ширина каждой колонки объекта Range 15 символов |
Height, Width (Double) |
Многие объекты | Application.Width=200 (статус R/W)
|
Ширина окна приложения 200 пт. Возвращает суммарную высоту строк объекта |
RowHeight (R/W |
Range |
Range("A1:B5").RowHeight=15 |
Устанавливает высоту каждой строки объекта Range в пунктах |
|
Range |
Range("A2"). |
В ячейку А2 записывается формула |
Value (R/W |
Range |
Range("A3").Value=6.28 |
Значение ячейки устанавливается равным 6,28 |
Count (R/O Long) |
Группа объектов | N= |
В переменную N записывается количество элементов |
Name (String) |
Многие объекты | ActiveSheet.Name="Nw_Sh"(статус R/W)
|
Активному листу присваивается новое имя. Переменной |
|
Многие объекты | P_t= Range("A1:B5").для объекта |
Возвращает объект обычно другого типа, который является объектом более высокого уровня по отношению к указанному объекту |
Свойства объектов изменяются при помощи
Синтаксис object.property=expression
object - ссылка на объект, над которым совершается действие;property - название свойства, значение которого необходимо изменить;expression - выражение, представляющее новое значение свойства объекта.Важно
Например, оператор ActiveCell.Font. Bold="b" является ошибочным, так как свойство Bold имеет тип Boolean и может принимать значения только True или False.
Пример
Процедура изменяет размеры активного окна приложения. Ширина и высота окна приложения вводятся в диалоге. Свойства Height и Width для объекта Window имеют статус R/W, но эти свойства нельзя изменять, если размер окна минимизирован или максимизирован. Поэтому первоначально в процедуре свойством устанавливается обычный размер окна
(рис 8.1) Процедура изменяет размеры активного окна приложенияПри помощи
Синтаксис
variable=object.property
variable - переменная или свойство некоторого объекта;object - ссылка на объект, свойство которого запоминается или тестируется;property - название свойства, значение которого необходимо получить.Важно
Примеры
Свойство возвращает
(рис 8.2) Процедура распечатки названия рабочего листа c активной ячейкойВ процедуре тестируется свойство Value объекта Range - ячейки A1. В случае отрицательного числа цвет заливки ячейки - синий.
(рис 8.3) Процедура тестировния свойства Value объекта RangeПри нулевом значении заливка ячейки отменяется (константа xlNone ). При положительном значении устанавливается цвет заливки, предусмотренный по умолчанию (константа xlAutomatic ).Методы - это действия, которые выполняются с объектом. Методы могут влиять на значения свойств.
Важно
InputBox класса Interaction и метод InputBox класса Application.Синтаксис вызова метода без аргументов
object.method
например, ActiveCell..
Вызов метода с аргументами имеет две формы:
variable=object.method(arguments ) - object.method arguments - операторная форма вызова (аргументы записываются через пробел после названия метода).Если метод использует несколько аргументов, то они перечисляются через запятую.
Аргументы можно задавать, используя позиционное или произвольное расположение.
ЗАПОМНИТЕ
Каждый объект имеет свои Delete может удалять графический объект и
Структура объектов достаточно сложна. Модель объектов показывает структуру объектов и их взаимосвязи.
(рис 8.4) Модель объектов MS Excel (фрагмент)Нажатие на выбранный объект отображает на экране статью, посвященную объекту, в которой ниже имени объекта, как правило, расположены три гиперссылки, позволяющие просмотреть свойства ( Properties ), методы ( Methods ) и события ( Events ) выбранного объекта с соответствующими примерами. В дополнение можно раскрыть список рекомендуемых для просмотра объектов ( See Also ). Нажатие на Multiple objects показывает перечень исходных объектов или перечень вложенных объектов.
(рис 8.5) Фрагмент статьи, посвященной объекту WorkbookОбъекты приложения связаны между собой, и модель объектов отражает иерархические связи между объектами.
Модель объектов содержит простые объекты и Collection ) объединяет группу подобных объектов.
является коллекцией всех открытых книг - объектов , а - коллекцией . Примерно половина всех объектов MS Excel - это
Процедуры могут обращаться как к отдельному элементу коллекции (к объекту или к объекту ), так и ко всем объектам коллекции одновременно (к объекту или к объекту ).
указывает на первую указывает на лист с именем Sheet2.
Объекты приложения могут включать в себя объекты разных типов. Например, container ), в котором содержится объект.
Самый старший Application. Приложение - это контейнер для всех открытых и коллекции .
Преимущества
Если в Sheet1 и Sheet2, то запись указывает на ячейку A1 Sheet1, а запись указывает на ячейку A1 Sheet2.
Объект в VBA указывается при помощи ссылки. Запись указывает на объект, являющийся листом с именем Sheet2 в , отличая его, таким образом, от листа с тем же именем, но в другой
Важно
Для объектов, относящихся к классу globals (например, активная Application можно опустить.
В VBA перед обращением к каждому из методов или свойств объекта требуется наличие ссылки на объект. Конструкция With…End With позволяет применить With. Благодаря этому программа становится менее громоздкой, освобождаясь от повторений ссылки на объект.
Синтаксис оператора
With Object [statements] End With
Object - statements - Первая строка этой структуры идентифицирует объект, с которым будут производиться действия. В последующих операторах используются свойства и методы идентифицированного объекта. Оператор End With является закрывающей скобкой для оператора With. Часто подобная структура записывается при помощи
Внимание
statements начинается с точки.Чтобы получить доступ к свойствам или методам объекта, можно использовать два способа: прямое указание на объект и применение
Например, установить полужирный шрифт для первой строки активного листа можно оператором ActiveSheet.Rows(1).Font.Bold = True или, используя объектную переменную, можно предложить два способа записи:
![]() |
![]() |
Здесь оператор Set создает объект, тип которого установлен при описании Range, во втором случае - тип объекта Font.
Преимущества
При открытии MS Excel автоматически становится доступным объект Application с его свойствами и методами. Объект Application - корневой объект приложения. В него вложены остальные объекты приложения. Доступ к ним осуществляется посредством свойств-участников объекта Application.
Для создания ссылки на объект Application используется свойство Application.
Application.Windows(" |
Оператор активизирует |
Application. |
Оператор выделяет интервал ячеек на активном |
Многие свойства объекта Application используются без ссылки на объект Application, так как они возвращают объекты, относящиеся к классу globals.
Свойства, название которых начинается со слова Active, возвращают Application, так как они входят в класс globals. Некоторые из этих свойств являются одновременно свойствами нескольких объектов.
| Свойство | Объект | Действие | Возвращаемый объект |
|---|---|---|---|
ActiveCell |
|
Возвращает |
Range |
ActiveSheet |
|
Возвращает активный лист. Это может быть |
|
ActiveWorkbook |
Application |
Возвращает активную |
|
ActiveWindow |
Application |
Возвращает активное окно | Window |
Selection |
|
Возвращает выделенный объект | Различные типы объектов |
Так как перечисленные в таблице свойства возвращают объекты, при записи операторов для
| Оператор | Комментарий |
|---|---|
ActiveCell.Font.Bold=True |
Устанавливает полужирный шрифт текста активной ячейки |
ActiveSheet.Name="Проба" |
Изменяет название активного листа |
MsgBox ActiveWorkbook.Fullname |
Высвечивает полное имя |
Selection.NumberFormat="0.00" |
Устанавливает числовой формат с двумя знаками после запятой для ячеек выделенного интервала |
ActiveCell.Value=10
|
Присваивают |
|
Очищает предварительно выделенный на листе Sheet1 объект, например, интервал ячеек |
Если никакой объект не выделен, то свойство Selection возвращает значение Nothing и очистка не выполняется |
|
|
Высвечивает тип предварительно выделенного на листе Sheet1 объекта |
Во время выполнения программ возможно высвечивание сообщений и запросов MS Excel (встроенных диалоговых окон), на которые пользователь должен реагировать. Например, это может быть запрос на False свойства DisplayAlerts позволяет отключить высвечивание подобных сообщений. При отключении запросов MS Excel выбирает ответ, который установлен в диалоге по умолчанию.
Важно
True, так как MS Excel автоматически его не восстанавливает.![]() |
Процедура закрывает без |
Это свойство обновления экрана разрешает (значение True ) или запрещает (значение False ) изменение экрана при выполнении команд MS Excel.
Если процедура выполняет команды MS Excel, то на экране отображаются все действия с объектами MS Excel: выделение и копирование ячеек, перемещение экрана и т.д. Свойство ScreenUpdating позволяет избежать подобного "мелькания экрана".
Важно
True, так как MS Excel автоматически его не восстанавливает.Это свойство позволяет скрывать или показывать окно приложения. Свойство доступно для многих объектов, например, для объектов формы.
![]() |
Процедура делает видимым окно приложения, если оно не видно или скрывает его, если окно высвечено. |
| Свойства | Описание | Примеры операторов |
|---|---|---|
|
Возвращает или устанавливает параметры вычислений. Задается константами |
Application. задает ручной пересчет |
Application.CalculateBeforeSave=True задает автоматический пересчет перед сохранением файла |
||
Path (R/O String) |
Возвращает |
MsgBox "Путь к приложению высвечивает путь к программе |
SheetsInNewWorkbook (R/W Long) |
Возвращает или устанавливает количество |
MsgBox "В новой высветит количество листов во вновь создаваемой |
ThisWorkbook |
Возвращает объект ThisWorkbook - Свойство |
ThisWorkbook.Close SaveChanges:=False закрывает |
ThisWorkbook.FullName возвращает |
||
For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close savechanges:=True
End If
Next w
Цикл закрывает с |
||
WorksheetFunction |
Возвращает одноименный объект-контейнер функций |
MsgBox "Десятичный логарифм 10^6 равен " WorksheetFunction.Log10(10^6) высвечивает 6 |
Важно
WorksheetFunction или на объект Application.Instr и функция Find.Метод позволяет запустить некоторую процедуру в заданный момент времени.
Синтаксис OnTime(EarliestTime, Procedure[,LatestTime])
EarliestTime - выражение, задающее время запуска процедуры;Procedure - имя запускаемой процедуры;LatestTime - самое позднее время, когда процедура может быть запущена, если невозможно было запустить ее точно в указанное время. Причиной невозможности запуска могло явиться выполнение диалога, который не был прерван ранее.Пример
(рис 8.6) Пример применения метода OnTimeПроцедура mes_time в 16:30 высвечивает сообщение "Пошли пить кофе".
Внимание
LatestTime=EarliestTime + 30, OnTime, не будет запущена вовсе.LatestTime не задавать, то MS Excel дождется завершения процедуры и запустит нужную процедуру.EarliestTime использовать выражение Now()+интервал времени, то процедура запустится спустя указанный интервал от текущего времени.Метод переводит приложение в состояние ожидания до наступления некоторого момента времени. Во время паузы пользователь не может выполнять никакие команды, но операции, выполняемые в фоновом режиме, например, распечатка, не прекращаются.
Синтаксис expression.
expression - возвращает объект Application ;Time - время окончания паузы в выполнении процедуры в формате даты.Пример
Процедура устанавливает паузу примерно на 10 секунд.
Используются , Minute, Second, TimeSerial, Now. С их помощью из текущего времени выделяются час, минуты, секунды; секунды увеличиваются на 10, и составляется время окончания паузы.
(рис 8.7) Пример применения метода Wait
Ссылка на объект коллекции - это название коллекции, после которого в скобках указывается индекс объекта или его имя в кавычках. Например, ссылка выбирает первую из открытых ссылается на "budget".
Важно
Документ MS Excel (. Можно одновременно работать с несколькими .
Свойство объекта Application возвращает объект .
При открытии или создании автоматически добавляется в конец коллекции , а при закрытии книги соответствующий элемент также автоматически удаляется из коллекции.
| Свойства и методы | Примеры операторов и комментарии |
|---|---|
Объект |
|
Свойство Count (R/O Long) |
MsgBox "Число открытых высвечивает число |
Метод Add |
добавляет новую |
Метод Close |
используется без аргументов и закрывает все |
Объект |
|
Свойство Colors |
Свойство, заданное с индексом, указывает на конкретный элемент палитры. ActiveWorkbook.Colors(5) = RGB(255,0,0) заменяет пятый цвет палитры на красный |
| Свойство без индекса возвращает палитру цветов в виде массива из 56 цветов.
|
|
Свойство Name (R/O String) |
MsgBox высвечивает имя последней открытой книги |
Свойство FullName (R/O String) |
MsgBox ActiveWorkbook.FullName возвращает полное имя активной |
Свойство |
ThisWorkbook. возвращает количество элементов в коллекции листов различных типов |
Свойство |
ActiveWorkbook. возвращает имя первого листа в коллекции диаграммных листов активной книги |
Свойство |
активизирует первый лист из коллекции |
Метод Open |
открывает существующую |
Метод Close |
ActiveWorkbook.Close SaveChanges:=True, закрывает перенумеровываются.Параметр |
Метод Activate |
активизирует указанную |
Метод SaveAs |
ActiveWorkbook.SaveAs сохраняет . Если в папка не указана, то файл сохраняется в текущей папке |
Событийные процедуры записываются на процедурном листе, связанном с объектом. Каждый объект имеет свои собственные события.
Чтобы вставить событийную процедуру для объекта
ThisWorkbook (Эта книга) в окне проекта;View Code или сделать двойной щелчок на объект ThisWorkbook ;Workbook ;Open событийная процедура имеет имя Workbook_Open ;Пример
При вставке нового листа в
![]() |
При выборе события NewSheet автоматически появляется новая процедура Workbook_NewSheet с параметром Sh. |
Значение параметра, являющееся ссылкой на объект - новый лист, передается процедуре во время ее выполнения. Метод Move перемещает вставленный лист. Параметр before этого метода определяет новое месторасположение листа - начало
Коллекция представляет собой совокупность листов различных типов - ) и листов диаграмм (коллекция ). Таким образом, каждый элемент коллекции является элементом коллекции или коллекции и наоборот, любой элемент коллекции или коллекции принадлежит коллекции .
| Свойства и методы | Примеры и комментарии |
|---|---|
Объекты , |
|
Свойство Count (R/O Long) |
MsgBox "Количество высвечивает количество |
Метод Add |
добавляет новый лист заданного типа в |
Объекты , , , |
|
Методы Copy, Move |
Копирует, перемещает указанные листы или группу листов в новое место. перемещает первый лист в конец |
Объекты , |
|
Метод Activate |
активизирует указанный |
Метод Delete |
ActiveWorkbook. удаляет первый |
Свойство Name (R/W String) |
Возвращает или устанавливает имя листа. переименовывает последний |
Объекты |
|
Свойство Columns (R/O) |
Возвращает коллекцию столбцов. устанавливает полужирный шрифт для первой колонки первого |
Свойство ScrollArea (R/W String) |
Определяет границы интервала, внутри которого возможно перемещение по ячейкам. При разрешает доступ только к ячейкам A1:F10 |
Свойство |
Возвращает коллекцию - коллекцию графических объектов ActiveSheet. меняет тип первого графического объекта активного листа на "сердечко" |
Свойство Rows(R/O) |
Возвращает коллекцию строк. удаляет третью строку |
Метод |
ActiveWorksheet. производит вычисления во всех ячейках указанного |
Метод CheckSpelling |
Используется для проверки правописания (с аргуменами и без аргументов). ActiveSheet.CheckSpelling ignoreUppercase:= True не проверяет слова, записанные только прописными буквами |
Добавляет новый лист в коллекцию , . При создании содержит столько SheetsInNewWorkbook объекта Application.
Внимание
Add для объектов Workbooks и Sheets имеет различный синтаксис.Cинтаксис метода для коллекций ,
expression.Add([Before] [,After] [,Count] [,Type])
expression - выражение, возвращающее коллекцию WorkSheets или Sheets . Указание обязательно;Count - количество вставляемых листов;Type - тип вставляемого листа. Используются константы: xlWorksheet (по умолчанию), xlChart (только для объекта Sheets ), xlExcel4MacroSheet, xlExcel4IntlMacroSheet.Важно
Before и After указывается ссылка на лист как индекс или имя в коллекции листов, например, Sheets (1) или Sheets ("Лист1")Метод Move используется для перемещения листов.
Синтаксис expression.Move([Before] [,After])
expression - ссылка на объект, представляющий перемещаемый лист. Указание обязательно;before и after (ссылки на лист, см. описание метода Add ) определяют новое местоположение перемещаемого листа. Если не указан ни один из параметров, то лист перемещается во вновь создаваемую Метод Select выделяет объект. При применении к одному листу методы Activate и Select активизируют указанный лист. Но метод Select используется для группировки листов, т.е. для расширения выделения.
Синтаксис expression.Select([
expression - ссылка на объект, представляющий выделяемый лист. Указание обязательно;Replace - для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.Замечание
Array. Например, Sheets (Array("Лист8", "Лист12")).Select.Пример
Процедура перемещает нечетные листы в конец
Чтобы вставить событийную процедуру для объекта :
WorkSheet (например, Лист1 ) в окне проекта;WorkSheet ;При выборе события автоматически вставляется процедура со стандартным именем, которое состоит из названия листа и названия события, разделенных нижним подчеркиванием (_).
Пример
При активизации листа Лист1 в ячейку A1 заноситcя название листа.
(рис 8.8) Пример работы с событийной процедурой объекта WorkSheet
При работе в MS Excel чаще всего выполняются некоторые действия с группой ячеек Range - это отдельная ячейка, целиком строка или столбец
Для задания объекта Range существуют различные возможности. Например, благодаря свойству ActiveCell, Range. Свойство Selection определяет выделенный интервал ячеек в качестве объекта Range.
| Свойства и методы | Применимы к объектам | Примеры и комментарии |
|---|---|---|
Свойство ActiveCell |
Application |
Оператор ActiveCell.Value=10 устанавливает значение активной ячейки равным 10 |
Свойство Areas |
Range |
Оператор Range("A1, B5:B10, C12:C20").Areas(3).Value = 10 устанавливает значение 10 для третьей области объекта Range - для ячеек интервала C12:C20 |
Свойство |
Application, Range, |
Оператор активизирует ячейку C7 и равносилен оператору Range("C7").Select |
Свойство Columns |
Application, Range, |
Оператор Columns("A:D").Select выделяет первые четыре столбца |
Свойство CurrentRegion |
Range |
Оператор ActiveCell.CurrentRegion.Count подсчитывает количество ячеек с данными в интервале, окружающем |
Свойство Offset |
Range |
Операторы Range ("A2:B10").Select, Selection.Offset(2,2).Value=10 устанавливают значение 10 каждой ячейки интервала C4:D12.Равносильно записи |
Свойство Range |
Application, Range, |
Операторы p=Range("A:B").Count, p=Range("налог").Count, p=ActiveSheet.Range("A1: присваивают переменной p количество ячеек в заданных интервалах |
Свойство Rows |
Application, Range, |
Оператор Rows("1:3").Select выделяет первые три строки |
Свойство Selection |
Application |
Оператор Selection.Clear очищает выделенный интервал ячеек |
Метод |
Range |
объединяет два несмежных интервала в один объект Range |
ЗАМЕЧАНИЯ
Range, не активизируя новую ячейку.Activate или Select не активизируют новую ячейку.Свойство Range возвращает объект Range, определяемый аргументами. Используются два разных способа записи свойства Range.
Первый способ object.Range(Cell1)
Второй способ object.Range(Cell1 [,Cell2])
object - ссылка на объект, например, на Cell1, Cell2 - аргументы для задания интервала ячеек. Cell1 - указание обязательно при обоих способах записи свойства Range.Первый способ
Аргумент Cell1 задает интервал ячеек произвольного размера.
Важно
| Запись | Возвращаемый объект |
|---|---|
ActiveSheet.Range("A1: |
интервал ячеек A1: |
Range("A:B") |
столбцы A:B |
Range("налог") |
интервал с именем налог |
Range("1:3") |
строки с первой по третью |
Range("A1: |
объединение двух несмежных интервалов A1: |
Range("A1:C10 B10:D24") |
пересечение двух интервалов A1:C10 и B10:D24, т.е. интервал B10:C10 |
Второй способ
Аргументы задают координаты интервала:
Cell1 - единственная ячейка (строка или столбец), задающая левый верхний угол интервала;Cell2 - единственная ячейка (строка или столбец), задающая правый нижний угол интервала. Необязательный аргумент.Допустимо задание аргументов переменными, выражениями, свойствами или методами, представляющими объект Range - одну ячейку, одну строку или один столбец
| Запись | Возвращаемый объект |
|---|---|
Range("A5","D18") |
интервал A5:D18 |
Range(Columns(1), Columns(5)) |
интервал, содержащий первые пять столбцов |
ЗАПОМНИТЕ
Range применяется к объекту Range, то ссылка на интервал ячеек считается относительной и возвращается смещенный объект Range.Например, если выделен интервал C1:D5, то запись Selection.Range("B2") возвратит ячейку D2.
Свойство возвращает единственную ячейку
Синтаксис object.
object - ссылка на объект. Ссылка необязательна. По умолчанию используется активный лист;RowIndex - индекс строки;ColumnIndex - индекс столбца.ЗАМЕЧАНИЯ
Cells индекс строки является первым аргументом, а индекс столбца - вторым аргументом, тогда как при задании адреса ячейки в стиле A1 сначала указывается столбец, а затем строка.Index, ColumnIndex, RowIndex ) всегда подразумевает целое число, целочисленную переменную или выражение, результат вычисления которого есть целое число или может быть преобразован в целое число.| Запись | Комментарий | Возвращаемый объект |
|---|---|---|
ActiveSheet. |
Свойство без аргументов |
все ячейки активного |
Range("C5:C10"). |
Свойство применяется к объекту Range (относительная ссылка) |
ячейка C5 |
Range( |
Свойство используется в качестве аргументов свойства Range |
интервал ячеек C7:D10 |
Свойство Offset позволяет задавать ячейки или интервалы при помощи числа строк и колонок, которые отделяют нужную ячейку от исходной ячейки, т.е. указывая смещение относительно выбранной ячейки. Например, Range("A5").Offset(-2,1) возвращает ячейку B3.
Синтаксис object.Offset([RowOffset][,ColumnOffset])
object - ссылка на объект Range. Ссылка обязательна и определяет объект, относительно которого задается смещение;RowOffset - смещение строки искомой ячейки относительно исходной ячейки;ColumnOffset - смещение столбца искомой ячейки относительно исходной ячейки.Необязательные аргументы RowOffset и ColumnOffset - числовые выражения. Если какой-то аргумент не задан, то соответствующее смещение равно нулю.
Например, если выделен интервал C1:D5, то запись Selection.Offset(2,1).Select выделяет интервал D3:E7.
Метод используется для объединения двух и более объектов Range, заданных ссылками на непересекающиеся интервалы, в один объект Range.
Синтаксис Object.
object - всегда объект Application. Ссылка необязательна;arg1,arg2 - интервалы ячеек. Количество аргументов произвольно. Обязательно наличие хотя бы двух аргументов.Например, оператор выделяет несмежные интервалы A1:C5 и B10:D12.
Свойство Areas выполняет обратное действие, разделяя объединенные интервалы на несколько объектов Range.
Синтаксис Object.Areas(index)
object - ссылка на объект Range, состоящий из нескольких интервалов;index - номер интервала в объекте. Аргумент необязателен.| Оператор | Комментарий | Результат |
|---|---|---|
p= |
Если аргумент задан, то свойство Areas возвращает интервал - объект Range, определенный индексом интервала |
равен девяти, так как во втором интервале ровно 9 ячеек |
p= |
Cвойство Areas без аргументов рассматривает каждый из несмежных интервалов как элемент Range |
равен двум, так как объект, определенный методом , состоит из двух областей - коллекции из двух элементов |
p=Range("B10:D12").Areas.Count |
равен единице, так как объект Range представляет один элемент коллекции |
Свойства возвращают целое число, показывающее индекс первого столбца или первой строки соответственно для заданного объекта. Синтаксис свойств
object.Column object Row
object - обязательная ссылка на объект Range.Например, запись Range("C5").Column возвращает число 3, а запись Range("C5").Row возвращает число 5.
Свойство Columns (не путайте со свойством Column!) возвращает объект Range, представляющий колонку или коллекцию колонок в объекте, к которому это свойство было применено.
Синтаксис Object.Columns(index)
object - ссылка на объект. Указание необязательно, по умолчанию используется активный index - индекс колонки в объекте.Например, запись Columns(1) возвращает колонку A активного Range("C1:D5").Columns(1) возвращает колонку C заданного интервала, а именно, ячейки C1:C5.
Важно
Range.Columns(2) и Columns("B") указывают на одну и ту же колонку B.Свойство Rows (не путайте со свойством Row!) возвращает объект Range, представляющий строку или коллекцию строк в объекте, к которому это свойство было применено.
Синтаксис Object.Rows(index)
object - ссылка на объект. Указание необязательно, по умолчанию используется активный index - индекс строки в объекте.Важно
Range.Например, оператор nr=Selection.Rows(Selection.Rows.Count).Row позволяет получить номер последней строки в выделенном интервале ячеек.
Свойство CurrentRegion определяет объект Range, который соответствует интервалу ячеек, включающему заданную ячейку.
Пример
В процедуре сравниваются значения первой ячейки первой строки и первой ячейки каждой следующей строки заполненного данными интервала, включающего первую ячейку. Если значения совпадают, то очередная строка удаляется.
Предполагается, что данные начинаются с ячейки A1 и занимают несколько строк и столбцов, при этом расположены не плотно, т.е. внутри интервала с данными могут находиться пустые строки или пустые столбцы. Анализируются только строки заполненного данными интервала ячеек вокруг ячейки A1, не содержащего пустых строк и столбцов.
(рис 8.9) Пример работы со свойством CurrentRegion| Свойства | Примеры и комментарии |
|---|---|
ColumnWidth (R/W |
Возвращает или изменяет ширину колонки в единицах, эквивалентных одному символу в стиле Обычный ( Normal ). Шрифт стиля по умолчанию Arial Cyr и размер шрифта 10.
|
Width (R/O |
Возвращает ширину интервала ячеек в пунктах.
|
RowHeight (R/W |
Возвращает или изменяет высоту строк интервала в пунктах.
|
Height (R/O |
Возвращает суммарную высоту интервала строк, зависящую от названия и размера шрифта. Если шрифт Arial Cyr и размер шрифта 10, то Debug.Print Range("A1").Height распечатает 12,75 и Debug.Print Range("A1:C3").Height распечатает 38,25 |
WrapText (R/W Boolean) |
Range("A1").WrapText=TrueЗначение |
Замечание
Width и Height имеют статус Read-Only для объектов Range, но для других объектов, например, для объекта Window, они имеют статус Read-Write.Метод Select выделяет интервал ячеек.
Синтаксис object.Select(
object - выделяемый объект типа Range. Ссылка на объект обязательна;Replace - для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.Метод Activate активизирует единственную ячейку.
Синтаксис object.Activate
object - активизируемая ячейка. Ссылка на объект обязательна.| Оператор | |
|---|---|
Range("C7:E9").Select |
C7 |
Range("C7:E9").Offset(1,1).Activate |
D8 |
Range("C7:E9").Activate |
C7 |
Range("C7:E9"). |
C8 |
ЗАМЕЧАНИЯ
Select выделяет интервал ячеек, тогда как метод Activate активизирует только одну ячейку.Select первая ячейка интервала становится активной.ActiveCell и Selection возвращают одну и ту же ячейку (объект Range ).Очищает интервал ячеек, изменяя, таким образом, свойство Value каждой ячейки интервала.
Пример
Процедура очищает интервал ячеек или заполняет его единицами в зависимости от значений ячеек. Дополнительно изменяется шрифт и размер шрифта.
(рис 8.10) Пример применения метода ClearНазвание шрифта является обязательным параметром вызываемой процедуры, а размер шрифта - необязательным параметром. Если он не задан, то размер шрифта принудительно меняется на 16.
Вызывающая процедура проверяет, является ли интервал ячеек A1:B5 пустым. Если это не так, то интервал очищается и размер шрифта устанавливается в 16. Если же интервал ячеек пуст, то все ячейки интервала заполняются единицами и размер шрифта интервала ячеек равен 10.
В обоих случаях шрифт ячеек интервала A1:B5 устанавливается в Times New Roman.
Свойство ColorIndex заливки (заливка - это объект Interior, который является вложенным для объекта Range ) рассматривает цвет как номер в палитре цветов
Пример
В ячейках, начиная с активной, отображается палитра цветов
Переменные c и r содержат, соответственно, индекс столбца и индекс строки активной ячейки.
Прямоугольный интервал из 56 ячеек (7 строк и 8 столбцов, начиная с активной ячейки) для отображения палитры задается переменной obj_range, содержащей ссылку на объект Range.
Свойство Pattern (образец заливки) задается константой xlSolid, позволяющей установить заливку активных ячеек.
(рис 8.11) Пример изменения свойства ColorIndex
Свойство относится к объектам Border, Font или Interior (вложенные объекты для объекта Range ) и устанавливает цвет объекта в формате RGB. Свойство можно задать, используя функцию RGB, которая возвращает цвет в виде числа типа Long. Аргументы функции Red, Green, Blue определяют насыщенность соответствующей компоненты в устанавливаемом цвете и изменяются от 0 до 255.
Например, оператор ActiveCell.Interior.Color=RGB(255, 0, 0) устанавливает красную заливку активной ячейки.
Замечание
Color со свойством Colors! Последнее является свойством объекта Workbook и использует палитру цветов ActiveWorkbook.Colors(51) = RGB(255,0,0) меняет 51 цвет палитры активной Чтобы использовать серый цвет разной интенсивности, установите равные аргументы функции RGB, например, выражение RGB(196,196,196) устанавливает 25% серую заливку. Чем больше значения аргументов, тем ближе серый цвет к белому.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.