Excel. Трюки и эффекты | страница 101



Листинг 3.21. Скрытие столбца по имени ячейки

Sub HideCell()

Range(«Секрет»).EntireColumn.Hidden = True

End Sub

В данном случае будет удален столбец, содержащий ячейку Секрет. Здесь также можно указывать как имя, так и адрес ячейки (например, если в приведенном макросе заменить Секрет на C3, то будет скрыт столбец С).

Можно использовать такой макрос (листинг 3.22).

Листинг 3.22. Скрытие нескольких столбцов по адресам ячеек

Sub HideCell()

Range(«C2:D5»).EntireColumn.Hidden = True

End Sub

После применения данного макроса будут скрыты столбцы С и D.

Чтобы вновь включить отображение скрытых столбцов, нужно в соответствующих макросах заменить значение True на False.

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

С помощью трюка, который рассматривается в данном разделе, можно быстро выделить любое количество ячеек, расположенных через определенный интервал. Пример макроса, который позволяет решить эту задачу, приведен в листинге 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, _