Быстрое выделение ячеек, расположенных через интервал

We use cookies. Read the Privacy and Cookie Policy

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

Листинг 3.23. Выделение ячеек через интервал (вариант 1)

Sub IntervalCellSelect()

Dim intFirstRow As Integer ' Первая строка для выделения

Dim intLastRow As Integer ' Последняя строка для выделения

Dim rgCells As Range ' Объединение выделяемых ячеек

Dim intRow As Integer

intFirstRow = 3

intLastRow = 300

' Формирование объединения ячеек в столбце "B" от строки _

intFirstRow до строки intLastRow с шагом 3

For intRow = intFirstRow To intLastRow Step 3

If rgCells Is Nothing Then

' Первая ячейка в объединении

Set rgCells = Cells(intRow, 1)

Else

' Добавление очередной ячейки в объединение

Set rgCells = Union(rgCells, Cells(intRow, 1))

End If

Next

' Выделение всех ячеек в объединении

rgCells.Select

End Sub

В результате выполнения данного макроса будет выделена каждая третья ячейка, начиная с 3 и заканчивая 300, в столбце А.

Точно такой же результат (быстрое выделение ячеек с 3 по 300 в столбце А) можно получить, применив такой макрос (листинг 3.24).

Листинг 3.24. Выделение ячеек через интервал (вариант 2)

Sub IntervalCellSelect()

Dim intFirstRow As Integer ' Первая строка для выделения

Dim intLastRow As Integer ' Последняя строка для выделения

Dim rgCells As Range ' Объединение выделяемых ячеек

Dim cell As Range ' Текущая ячейка

Dim intRow As Integer

intFirstRow = 3

intLastRow = 300

' Формирование объединения ячеек в столбце "B" от строки _

intFirstRow до строки intLastRow с шагом 3

For intRow = intFirstRow To intLastRow Step 3

Set cell = Cells(intRow, 1)

Set rgCells = Union(cell, _

IIf(intRow = intFirstRow, cell, rgCells))

Next

' Выделение всех ячеек в объединении

rgCells.Select

End Sub

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

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

Листинг 3.25. Выделение нескольких диапазонов

Sub SelectRange()

Range(«D3:D10, A3:A10 , F3»).Select

End Sub

В результате выполнения данного макроса будут выделены диапазоны D3:D10, АЗ:А10 и ячейка F3.