В этом руководстве мы собираемся показать вам, как ссылаться на диапазон или ячейку в 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)
Используя номер индекса ячейки:
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 'Ссылается на активный рабочий лист