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