Помогите пожалуйста разобраться с макросом, очень нужен мне на работе. У меня есть макрос:
Код
Sub FindAndSelect()
Dim strStartAddr As String ' Хранит координаты первого найденного _
значения
Dim rgResult As Range
' Поиск первого входжения искомого слова
Set rgResult = Range("A1:A10000").Find("слон", , xlValues)
If Not rgResult Is Nothing Then
' Сохраним адрес найденной ячейки (чтобы контролировать _
зацикливание поиска)
strStartAddr = rgResult.Address
End If
Do While Not rgResult Is Nothing
' Обработка результата поиска
rgResult.Interior.Color = RGB(135, 206, 235)
' Новый поиск
Set rgResult = Range("A1:A10000").FindNext(rgResult)
If rgResult.Address = strStartAddr Then
' Поиск завершен
Exit Do
End If
Loop
MsgBox ("Поиск завершен!")
End Sub
Этот макрос ищет по столбцу А с 1 по 10000 строку, слово "слон" и выделяет ячейку цветом. Я бы хотела его доработать так, чтобы макрос искал не одно слово "слон", а искал еще несколько слов, и закрашивал ячейку разным цветом, к примеру: "слон" закрашивал красным, "белку" закрашивал зеленым, "шмеля" закрашивал серым.
Самое простое - поставить ещё 2 таких блока поиска в этот же макрос (заменить слово и цвет). Чуть сложнее - сделать ещё 2 копии этого кода (заменить слово и цвет) и сделать ещё один простой код для вызова этих получившихся 3-х.
Ещё вариант - поставить блок поиска в цикл, перебирая массив слов и цветов.
Если найденных/искомых слов будет много - можно собрать словарь слов и цветов, затем за один проход по МАССИВУ слов покрасить ЯЧЕЙКИ на листе.
Довольно простой код:
Код
Sub testpainting()
Dim a()
Application.ScreenUpdating = False
With CreateObject("Scripting.Dictionary")
.Item("слон") = RGB(135, 206, 235)
.Item("белка") = RGB(235, 206, 235)
.Item("шмель") = RGB(35, 206, 235)
With [a1:a10000]
.Interior.ColorIndex = xlNone
a = .Value
End With
For i = 1 To UBound(a)
If .exists(a(i, 1)) Then Cells(i, 1).Interior.Color = .Item(a(i, 1))
Next
End With
Application.ScreenUpdating = True
End Sub
Если нужно ускорить - можно усложнить: собираем номера нужных строк например в коллекцию, затем красим сразу группами (есть несколько способов).
Добрый день Подскажите пожалуйста как записать сюда поиск по части слова, но строго в последовательности например: *ло* - находит все слова где в центре есть ло сл* - исключительно где слова начинаются со "сл"