Алексей Алексеевич Громаковский - Excel. Трюки и эффекты стр 34.

Шрифт
Фон

Алексей Гладкий, Александр Чиртик - Excel. Трюки и эффекты

Рис. 3.6. Текст по умолчанию в окне ввода данных

Работа в данном окне ведется по обычным правилам Windows.

Применение функции без ввода ее в ячейку

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

Листинг 3.14. Применение функции без ввода в ячейку

Sub Func()

[a1] = Application.Sum([B5:B10])

End Sub

Результатом работы данного макроса будет сумма диапазона ячеек В5:В10, отображаемая в ячейке А1.

Скрытие строк и столбцов от посторонних

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

Чтобы скрыть строку под определенным номером, можно применить следующий макрос (листинг 3.15).

Листинг 3.15. Скрытие строки

Sub HideString()

Rows(2).Hidden = True

End Sub

В результате применения этого макроса будет скрыта строка 2.

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

Листинг 3.16. Скрытие нескольких строк

Sub HideStrings()

Rows("3:5").Hidden = True

End Sub

После его выполнения будут скрыты строки 3, 4 и 5.

Чтобы вновь отобразить скрытую строку (или строки), необходимо в соответствующих макросах изменить значение True на False, после чего запустить их на выполнение.

Похожие макросы используются для управления отображением столбцов). Например, в результате выполнения макроса, код которого приведен в листинге 3.17, будет скрыт столбец В.

Листинг 3.17. Скрытие столбца

Sub HideCollumn()

Columns(2).Hidden = True

End Sub

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

Для скрытия нескольких столбцов можно применить, например, такой макрос (листинг 3.18).

Листинг 3.18. Скрытие нескольких столбцов

Sub HideCollumns()

Columns("E:F").Hidden = True

End Sub

В результате выполнения данного макроса будут скрыты столбцы Е и F.

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

Можно также скрывать строки и столбцы, ориентируясь на адрес или имя ячейки. Например, используйте такой макрос (листинг 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 приведен пример макроса, выполнение которого позволяет решить эту задачу.

Листинг 3.26. Сумма данных диапазона

Sub CalculateSum()

Dim i As Integer

Dim intSum As Integer

' Расчет суммы ячеек столбца "A" (с первой по пятую)

For i = 1 To 5

intSum = intSum + Cells(i, 1)

Next

MsgBox "Сумма ячеек: " & intSum

End Sub

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

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

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке