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

Range(Cells(Selection.Row, 1), Cells(Selection.Row, 3)).Select

Свойство Cells возвращает объект, представляющий определенную строку и столбец (отдельную ячейку) листа. В этом случае Cells используется дважды для определения определенного диапазона ячеек. Первый экземпляр возвращает первую ячейку текущей строки, а второй возвращает третью ячейку текущей строки. Таким образом, диапазон становится ячейками с первой по третью текущей строки.

Вместо использования свойства Cells для указания местоположения вы можете использовать свойство Offset для выполнения большей части той же задачи. Рассмотрим следующий код:

Range(ActiveCell.Offset(-3, 5), ActiveCell.Offset(0, 10)).Select

При этом используется свойство Offset объекта ActiveCell, чтобы указать диапазон относительно текущей выбранной ячейки. Свойство Offset принимает аргумент, представляющий строку и столбец смещения. Отрицательное значение представляет вверх (для строки) и влево (для столбца). Положительное значение — вниз (для строки) и вправо (для столбца). Вы также можете использовать значение 0, которое представляет текущую строку или столбец.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2268) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Selecting_a_Range_of_Cells_Relative_to_the_Current_Cell [Выбор диапазона ячеек относительно текущей ячейки].