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

⚡ Умное резюме

Объект Range в Excel VBA представляет собой одну ячейку или группу ячеек на рабочем листе. На этой странице объясняется иерархия объектов, свойства Range и Cells, выбор и обращение к ячейкам, чтение и запись значений, а также свойство Offset.

  • 🎯 Определение: Объект Range указывает на отдельную ячейку, строку, столбец, выделенную область или трехмерный диапазон.
  • 🧬 Иерархия: В полной квалифицированной рекомендации следует указать: Приложение, Рабочие тетради, Рабочие листы, а затем Диапазон.
  • 🏷️ Свойства и методы: Свойство хранит информацию об объекте, а метод выполняет действие, например, выборку (Select) или слияние (Merge).
  • 🔢 Свойства клеток: Функция Cells(Row, Column) обращается к ячейке по номеру, что подходит для циклического выполнения программ.
  • ✍️ Чтение и письмо: Свойство Value позволяет как получить содержимое ячейки, так и записать новое содержимое обратно.
  • ↔️ Компенсационный объект недвижимости: Смещение перемещает ссылку на заданное количество строк и столбцов относительно исходной ячейки.

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

Что такое диапазон VBA?

Объект диапазона VBA представляет ячейку или несколько ячеек на листе Excel. Это самый важный объект Excel VBA. Используя объект диапазона Excel VBA, вы можете обратиться к:

  • Одна ячейка
  • Строка или столбец ячеек
  • Выбор ячеек
  • 3-D диапазон

Как мы обсуждали в предыдущем уроке, VBA используется для записи и выполнения кода. МакросНо как VBA определяет, с какими данными на листе нужно работать? Вот здесь и пригодятся объекты диапазона VBA.

Введение в ссылки на объекты в VBA

Ссылка на объект диапазона VBA Excel и квалификатор объекта.

  • Спецификатор объекта: используется для ссылки на объект. Он указывает книгу или лист, на который вы ссылаетесь.

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

  • Имущество: Свойство хранит информацию об объекте.
  • Метод: Метод — это действие объекта, которое он выполняет. Объект диапазона может выполнять такие действия, как выбор, копирование, очистка, сортировка и т. д.

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

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

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

Как обратиться к объекту диапазона Excel VBA, используя свойство Range

Свойство Range можно применять к объектам двух разных типов.

  • Объекты рабочего листа
  • Объекты диапазона

Синтаксис свойства Range

  1. Ключевое слово «Диапазон».
  2. Круглые скобки после ключевого слова
  3. Соответствующий диапазон ячеек
  4. Цитата (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")

Когда вы ссылаетесь на объект Range, как показано выше, он называется полностью квалифицированная ссылкаВы точно указали Excel, какой диапазон вам нужен, на каком листе и на каком рабочем листе.

Пример: СообщениеBox Рабочие листы(“Лист1”).Диапазон(“A1”).Значение

Используя свойство Range, вы можете выполнять множество задач, например:

  • Обратитесь к одной ячейке, используя свойство диапазона.
  • Обратитесь к одной ячейке, используя свойство Worksheet.Range.
  • Ссылка на всю строку или столбец
  • Обратитесь к объединенным ячейкам, используя свойство Worksheet.Range и многое другое.

Таким образом, будет слишком долго охватить все сценарии для свойства диапазона. Для сценариев, упомянутых выше, мы продемонстрируем пример только для одного. Обратитесь к одной ячейке, используя свойство диапазона.

Обратитесь к одной ячейке, используя свойство Worksheet.Range.

Чтобы сослаться на ячейку, передайте ее адрес свойству Range в виде текстовой строки.

Синтаксис прост «Диапазон («Ячейка»)».

Здесь мы будем использовать команду «.Select», чтобы выбрать одну ячейку на листе.

Шаг 1) На этом шаге откройте файл Excel.

Одна ячейка с использованием свойства Worksheet.Range

Шаг 2) На этом этапе

  • Нажмите на Одна ячейка с использованием свойства Worksheet.Range .
  • Откроется окно.
  • Введите здесь название вашей программы и нажмите кнопку «ОК».
  • Вы попадете в основной файл Excel. В верхнем меню нажмите кнопку «Остановить запись», чтобы остановить запись макроса.

Одна ячейка с использованием свойства Worksheet.Range

Шаг 3) На следующем этапе

  • Нажмите кнопку «Макрос» Одна ячейка с использованием свойства Worksheet.Range из верхнего меню. Откроется окно ниже.
  • В этом окне нажмите кнопку «Изменить».

Одна ячейка с использованием свойства Worksheet.Range

Шаг 4) Вышеуказанный шаг откроет редактор кода VBA для файла с именем «Single Cell Range». Введите код, как показано ниже, для выбора диапазона «A1» из листа Excel.

Sub SingleCellRange()
    Range("A1").Select
End Sub

Одна ячейка с использованием свойства Worksheet.Range

Шаг 5) Теперь сохраните файл Одна ячейка с использованием свойства Worksheet.Range и запустите программу, как показано ниже.

Одна ячейка с использованием свойства Worksheet.Range

Шаг 6) После выполнения программы вы увидите, что ячейка «A1» выбрана.

Одна ячейка с использованием свойства Worksheet.Range

Аналогичным образом, вы можете выбрать ячейку с определенным именем. Например, если вы хотите найти ячейку с именем «Guru99. Учебное пособие по VBA. Вам необходимо выполнить команду, как показано ниже. Она выберет ячейку с указанным именем.

Диапазон("Guru99- Учебное пособие по VBA).Выберите

Чтобы применить другой объект диапазона, вот пример кода.

Диапазон выбора ячейки в Excel Заявленный диапазон
Для одной строки Диапазон («1:1»)
Для одной колонки Range(“A:A”)
Для смежных ячеек Диапазон("A1:C5")
Для несмежных ячеек Диапазон("A1:C5, F1:F5")
Для пересечения двух диапазонов Диапазон("A1:C5 F1:F5")
(Для ячейки пересечения помните, что здесь нет оператора запятой)
Чтобы объединить ячейку Диапазон("A1:C5")
(Чтобы объединить ячейки, используйте команду «Объединить»).

Выбор ячейки — это только первый шаг. На практике макрос считывает содержимое ячейки и записывает новое значение обратно.

Как читать и записывать значения с помощью объекта Range

Практически каждый макрос, работающий с рабочим листом, выполняет одно из двух действий: считывает значение из ячейки или записывает его в неё. Оба варианта используют свойство Value, и ни один из них не требует предварительного выделения ячейки.

Sub ReadAndWrite()
    Dim Price As Double
    Dim Qty As Long

    ' Read two values out of the sheet
    Price = Range("B1").Value
    Qty = Range("B2").Value

    ' Write the calculated result back
    Range("B3").Value = Price * Qty

    ' Fill a whole block in one statement
    Range("D1:D10").Value = "Guru99"

    ' Clear only the contents, keeping the formatting
    Range("F1:F10").ClearContents
End Sub

Четыре фактора делают эту закономерность надежной.

  • Выбрать необязательно: Writing Range(“B3”).Value = 10 Это быстрее и безопаснее, чем сначала выделить ячейку. Записанные макросы полны операторов .Select, потому что записывающее устройство дублирует действия мыши, а не потому, что это необходимо коду.
  • Значение против текста: .Value возвращает исходные данные, а .Text возвращает отформатированную строку, отображаемую на экране, которая может быть усечена по ширине столбца. .Value используется в вычислениях.
  • Целые блоки в одну строку: Назначение нескольких ячеек одновременно заполняет все ячейки, что намного быстрее, чем простое чтение.ping.
  • Удалите нужную информацию: Функция ClearContents удаляет только значения, Clear удаляет также форматирование, а Delete удаляет ячейки и сдвигает окружающие их ячейки.

Свойство Range указывает на ячейку по букве и цифре. Второе свойство указывает на ту же ячейку по двум цифрам.

Свойство ячейки

Аналогично диапазону, в VBA Вы также можете использовать «Свойство ячейки». Единственное отличие заключается в том, что у него есть свойство «элемент», которое используется для ссылки на ячейки в вашей электронной таблице. Свойство ячейки полезно в программном цикле.

Например,

Cells.item(Row, Column). Обе строки ниже относятся к ячейке A1.

  • Cells.item(1,1) ИЛИ
  • Cells.item(1»,A»)

Разница между диапазоном и ячейками в VBA

Диапазон и ячейки обращаются к одним и тем же ячейкам рабочего листа разными путями, и правильный выбор делает код короче и проще для чтения.

Отличие Диапазон Клетки
Формат адреса Текстовая строка, Range(“A1”) Два числа, ячейки (1, 1)
Несколько ячеек Да, Range(“A1:C5”) По одной клетке за раз
Внутри цикла Требуется конкатенация строк. Номер строки может быть счетчиком цикла.
читабельность Соответствует адресу, который вы видите в Excel. Столбец 27 сложнее представить, чем AA.
Совместное использование Range(Cells(1, 1), Cells(5, 3)) создает ячейки A1:C5 из чисел.

На практике следует использовать параметр Range для фиксированного адреса, который можно быстро прочитать, а параметр Cells — всякий раз, когда номер строки или столбца вычисляется во время выполнения.

Свойство смещения диапазона

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

Например,

Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select

В результате этого ячейка B2 будет перемещена. Свойство offset переместит ячейку A1 на 1 столбец и 1 строку. Вы можете изменить значение RowOffset / ColumnOffset по своему усмотрению. Вы можете использовать отрицательное значение (-1), чтобы переместить ячейки назад.

Загрузите Excel, содержащий приведенный выше код.

Скачайте указанный выше файл Excel. Code

Часто задаваемые вопросы (FAQ)

Используйте Cells(Rows.Count, 1).End(xlUp).Row. Он начинает отсчет с нижней ячейки столбца A и переходит к последней ячейке с данными, что более надежно, чем UsedRange после удаления строк.

Каждое чтение или запись происходит между VBA и Excel. Загрузите диапазон в массив с помощью одного присваивания, обработайте массив в памяти, а затем запишите его обратно одним оператором. Отключение обновления экрана также помогает.

Обычно это ошибка, связанная с недействительным адресом, именем несуществующего листа или попыткой выбрать диапазон на неактивном листе. Укажите в ссылке название листа или сначала активируйте лист.

Да. Вставьте записанный код, и ИИ-помощник заменит каждую пару "Выбор" и "Выбор" прямой, полной ссылкой на диапазон. Запустите обе версии на копии и сравните таблицу перед сохранением.ping перемена.

Да. Опишите целевую строку, например, каждую заполненную строку в столбцах от A до D на листе «Данные», и помощник с искусственным интеллектом вернет соответствующее выражение диапазона. Перед запуском на реальных данных проверьте его на небольшой выборке.

Подведем итог этой публикации следующим образом: