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



Листинг 3.60. Поиск данных с помощью макроса

Sub CustomSearch()

Dim strFindData As String

Dim rgFound As Range

Dim i As Integer

' Ввод строки для поиска

strFindData = InputBox(«Введите данные для поиска»)

' Просмотр всех рабочих листов книги

For i = 1 To Worksheets.Count

With Worksheets(i).Cells

' Поиск на i-м листе

Set rgFound = .Find(strFindData, LookIn:=xlValues)

If Not rgFound Is Nothing Then

' Ячейка с заданным значением найдена – выделим ее

Sheets(i).Select

rgFound.Select

Exit Sub

End If

End With

Next

' Поиск завершен. Ячейка не найдена

MsgBox («Поиск не дал результатов»)

End Sub

При выполнении данного макроса открывается окно, изображенное на рис. 3.18.

Рис. 3.18. Ввод данных для поиска


В данном окне с клавиатуры следует ввести текст (число, дату и т. п.), который требуется найти, и нажать кнопку ОК. Результатом поиска будет позиционирование курсора в ячейке с искомым текстом. Если же поиск не дал результатов, то на экран будет выведено окно, изображенное на рис. 3.19.

Рис. 3.19. Информационное сообщение


Следует отметить, что поиск данных ведется не только на текущем рабочем листе, но и на всех остальных листах открытой рабочей книги.

Включение автофильтра с помощью макроса

Как известно, включение автофильтра для выделенного диапазона осуществляется на вкладке Данные с помощью кнопки Фильтр. Для этого можно также воспользоваться следующим макросом (листинг 3.61).

Листинг 3.61. Включение автофильтра

Sub EnableAutoFilter()

On Error Resume Next

Selection.AutoFilter

End Sub

Для данного макроса можно создать значок и поместить его на панель инструментов – это позволит включать автофильтр быстрее, чем стандартным способом.

Трюки с форматированием

В данном разделе мы рассмотрим несколько трюков, с помощью которых можно быстро выполнить нестандартное форматирование выделенного диапазона.

Изменение формата представления чисел нештатными средствами

С помощью небольшого макроса можно быстро установить выделенному диапазону ячеек формат «два знака после запятой». Данный макрос выглядит следующим образом (листинг 3.62).

Листинг 3.62. Формат «два знака после запятой»

Sub ChangeNumberFormat()

Selection.NumberFormat = «0.00»

End Sub

После выполнения макроса числа в выделенном диапазоне будут отображены с двумя знаками после запятой (например, число 54 будет показано как 54,0 0).

Для форматирования ячеек с использованием разделителя по разрядам можно применить такой макрос (листинг 3.63).

Листинг 3.63. Использование разделителя по разрядам