Можно также скрывать строки и столбцы, ориентируясь на адрес или имя ячейки. Например, используйте такой макрос (листинг 3.19).
Листинг 3.19. Скрытие строки по имени ячейки
Sub HideCell()
Range(«Секрет»).EntireRow.Hidden = True
End Sub
После его применения будет скрыта строка, в которой находится ячейка с именем Секрет. Этот трюк удобно использовать, например, когда нужно срочно скрыть какие-либо данные, но адрес ячейки вспомнить не удается, а известно только ее имя. Однако при необходимости вместо имени можно указывать конкретный адрес ячейки (например, если в приведенном макросе заменить Секрет на А2, то будет скрыта строка 2).
Можно также указывать диапазон ячеек, строки с которыми нужно скрыть. Пример такого макроса приведен в листинге 3.20.
Листинг 3.20. Скрытие нескольких строк по адресам ячеек
Sub HideCell()
Range(«B3:D4»).EntireRow.Hidden = True
End Sub
После применения данного макроса будут скрыты строки 3 и 4.
Чтобы вновь отобразить скрытую строку (или строки), необходимо в соответствующих макросах изменить значение True на False и запустить их на выполнение.
Управлять отображением столбцов также можно, исходя из адреса или имени ячейки. Вот пример такого макроса (листинг 3.21).
Листинг 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, _
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.
Определение количества ячеек в диапазоне и суммы их значений
Применив простой трюк, можно быстро сложить данные из указанного диапазона ячеек. В листинге 3.26 приведен пример макроса, выполнение которого позволяет решить эту задачу.
Читать дальше
Конец ознакомительного отрывка
Купить книгу