Как ссылаться на диапазон или ячейку в Excel VBA

В этом руководстве мы собираемся показать вам, как ссылаться на диапазон или ячейку в Excel VBA.

Основы VBA

Прежде чем углубиться в код, давайте начнем с обозначения ячейки или диапазона в VBA. Во-первых, VBA — это объектно-ориентированный язык программирования, что означает, что язык ссылается на каждый элемент как на объекты. Объекты имеют свойства, которые их определяют, и они могут инкапсулировать другие объекты или коды. Таким образом, отдельная ячейка, диапазон ячеек, рабочий лист или программное обеспечение Excel в целом являются объектом для VBA. Вы можете представить это как иерархическую модель.

Изображение иллюстрирует лишь небольшую часть объектов Excel в VBA. Экземпляр Excel содержит коллекцию Workbooks . Коллекция — это группа связанных объектов. Например, если вы откроете две рабочие книги, в коллекции Workbooks будет два объекта Workbook. Каждый объект Workbook имеет свои собственные листы в коллекции Worksheets. Эта структура применима ко всем.

VBA охватывает все ячейки и ссылки на основе ячеек в объекте с именем Range. Теоретически, когда ссылаются на конкретный объект, вам также необходимо указать его родителей. В синтаксисе VBA оператор dot (.) используется для перемещения по иерархии объектов. Например, для доступа к объекту Range код должен быть:

Приложение.Рабочие книги.Рабочие листы.Диапазон

Однако эта ссылка неоднозначна, когда нужно указать, на какую книгу Excel вы ссылаетесь. Чтобы сделать это, вы должны указать имя или порядковый номер (начиная с 1) конкретного объекта, на который вы ссылаетесь. Этот подход аналогичен формулам Excel — аргумент указывается в круглых скобках. Например, для ссылки на объект range на рабочем листе “Sheet1” рабочей книги “Book1.xlsm”:

Приложение.Рабочие книги ("Book1.xlsm").Рабочие листы ("Sheet1").Диапазон

или

Приложение.Рабочие книги (1).Рабочие листы (1).Диапазон

Вам не обязательно каждый раз указывать все родительские элементы для объекта Range . Если вы собираетесь работать на активном листе активной книги, вы можете просто использовать диапазон.

Объект диапазона

Объект Range позволяет ссылаться на ячейку или ячейки точно так же, как в любой формуле Excel. Например,

Range("A1") 'Ссылается на ячейку A1
Range ("A2: D11")'Ссылается на диапазон ячеек между A2: D11
Диапазон ("A3, B4: E6,F12") 'Ссылается на все ячейки в ячейках A3, F12 и диапазон B4: E6
Диапазон ("2: 2") 'На всю 2-ю строку
Диапазон ("E: E") 'Весь столбец E
Диапазон ("Ввод") 'Именованный диапазон "Ввод"

Использование квадратных скобок для ссылки на диапазон или ячейку

Вы можете использовать квадратные скобки ([]) вместо ключевого слова “Range” и двойные кавычки (“). Этот подход, по сути, является сокращением, и результат тот же.

[A1] 'Ссылается на ячейку A1
[A2: D11] 'Ссылается на диапазон ячеек между A2: D11
[A3,B4: E6,F12] 'Ссылается на все ячейки в ячейках A3, F12 и диапазоне B4: E6
[2:2] 'На всю 2-ю строку
[E: E] 'Весь столбец E
[Ввод] 'Именованный диапазон "Ввод"

Свойство Cells для ссылки на диапазон или ячейку

Ячейки — это имя свойства объектов как листа, так и диапазона . Это не является ни коллекцией, ни объектом. Таким образом, объектов с именем Cell не существует.

Другими словами, свойство Cells также возвращает объект Range . Каждое свойство Cells в объектах Worksheet и Range работает только в контексте своего родителя. Такое поведение может иметь больше смысла в примерах.

Синтаксис

Свойство Cells можно использовать двумя способами:
С помощью индексных номеров строк и столбцов:

Ячейки (номер строки, номер столбца)

Используя номер индекса ячейки:

Cells(номер ячейки) ‘ссылается на 23-ю ячейку в диапазоне

Примеры

Worksheet.Cells

Свойство Cells объекта Worksheet возвращает ячейку в определенном месте на рабочем листе.
С помощью индексных номеров строк и столбцов:

Cells(3,2) 'ссылается на ячейку в третьей строке и втором столбце активного листа (B3)

Как ссылаться на диапазон или ячейку в Excel VBA 02
Используя номер индекса ячейки:

Cells(5) 'ссылается на 5-ю ячейку в диапазоне (E1)

Нумерация ячеек начинается с 1 и увеличивается слева направо и сверху вниз. Это означает, что A1 является первой ячейкой.

Range.Cells

С другой стороны, свойство Cells объекта Range возвращает ячейку в указанном местоположении диапазона.
С помощью индексных номеров строк и столбцов:

Range ("C4: F9").Cells(3,2) 'ссылается на ячейку в третьей строке и втором столбце активного диапазона (D6)


Используя номер индекса ячейки:

Range ("C4:F9").Cells(5) ‘ссылается на 5-ю ячейку в диапазоне (C5)

Активные объекты для ссылки на диапазон или ячейку

В VBA есть ключевые слова для ссылки на активные (выбранные) объекты во время выполнения кода.

ActiveCell 'Ссылается на выбранную ячейку
Выделение ' Ссылается на любой выбранный объект. Это могут быть ячейки или диаграмма
ActiveSheet 'Ссылается на активный рабочий лист
ActiveWorkbook 'Ссылается на активный рабочий лист
Автор А. Днепров

Обучаю основам работы с офисными программами.

Как ссылаться на диапазон или ячейку в Excel VBA
MS EXCEL