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



Dim rgResult As Range

' Поиск заданного значения в диапазоне B1:B20 и вывод результата

Set rgResult = Range(«B1:B20»).Find(9999, , xlValues)

If rgResult Is Nothing Then

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

Else

MsgBox rgResult.Address

End If

End Sub

С помощью данного макроса обрабатывается диапазон В1:В20, в котором ведется поиск значения 9 99 9. При обнаружении данного значения появляется окно с указанием адреса соответствующей ячейки. Если же указанное значение не обнаружено, то в данном окне отображается сообщение Поиск не дал результатов.

Поиск с выделением найденных данных

Достаточно удобным является вид поиска, в котором используется выделение найденных ячеек. Применение данного способа весьма целесообразно при работе с большими объемами данных. Для настройки поиска можно использовать, например, такой макрос (листинг 2.30).

Листинг 2.30. Выделение найденных данных

Sub FindAndSelect()

Dim strStartAddr As String ' Хранит координаты первого найденного _ значения

Dim rgResult As Range

' Поиск первого входжения искомого слова

Set rgResult = Range(«B1:B10»).Find(«Прибыль», , xlValues)

If Not rgResult Is Nothing Then

' Сохраним адрес найденной ячейки (чтобы контролировать _

зацикливание поиска)

strStartAddr = rgResult.Address

End If

Do While Not rgResult Is Nothing

' Обработка результата поиска

rgResult.Interior.Color = RGB(255, 255, 0)

' Новый поиск

Set rgResult = Range(«B1:B10»).FindNext(rgResult)

If rgResult.Address = strStartAddr Then

' Поиск завершен

Exit Do

End If

Loop

End Sub

Этот макрос обрабатывает диапазон В1:В10 и ищет в нем значение Прибыль. Все ячейки, в которых обнаружено данное значение, будут выделены желтым цветом (строка rgResult. Interior. Color = RGB (255, 255, 0)). С помощью подобных макросов можно обрабатывать любые диапазоны и находить в них любые значения.

Создание цветной границы диапазона

Для каждого диапазона рабочего листа можно создать индивидуальную границу: например, верхняя часть границы выделяется одним цветом, а нижняя – другим. В приведенном в листинге 2.31 макросе верхняя граница диапазона будет начертана толстой синей линией, а нижняя – розовой пунктирной обычной толщины.

Листинг 2.31. Оформление верхней и нижней границ диапазона

Sub RangeBorder()

Dim rgRange As Range

Set rgRange = Range(«B2:D5»)

' Оформление верхней границы диапазона

With rgRange.Borders(xlEdgeTop)

.Weight = xlThick

.LineStyle = xlContinuous

.Color = RGB(0, 0, 255)

End With

' Оформление нижней границы диапазона