Найти тему
VBA Excel с нуля

VBA Excel № 30. Свойство Offset (Смещение).

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

объект.Offset(смещение_строки, смещение_столбца)

Два аргумента свойства Offset определяют смещение относительно верхнего левого угла указанного диапазона Range. Эти аргументы могут быть положительными (смещение вниз или вправо), отрицательными (смещение вверх или влево) или равными нулю. В примере ниже значение 12 записывается в ячейку, расположенную под активной ячейкой (для большего восприятия, активную ячейку я залил жёлтым цветом).

ActiveCell.Offset(1, 0).Value = 12

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

ActiveCell.Offset(-1, 0).Value = 15

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Если активная ячейка находится в строке 1, то свойство Offset в предыдущем примере вызовет ошибку, так как вернет несуществующий объект Range (т.е. выше строки-то нет).

Свойство Offset наиболее удобно использовать для изменения значений переменных в цикле (но об этом позже).

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

ActiveCell.Offset(0,-1).Value = 24

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

ActiveCell.Offset(0, 1).Value = 16

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Начиная со следующей статьи будем знакомиться с вводом кода VBA