Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2015, 04:36   #1
lapin912
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 22
По умолчанию (excel_2010_VBA) Поиск по параметрам

Доброго дня всем. Прошу помощи в написании макроса поиска ячеек, содержащих текст «Событие (» и окрашивание их, допустим в желтый, цвет, а ячеек с текстом «Участок.» в фиолетовый, данный текст присутствует всегда, а также поиск ячеек содержащих информацию «08:30:00:00», «09:00:00:00», «13:30:00:00», «16:00:00:00»«18:30:00:00», «00:00:00:00» и окрашивание диапазона ячеек (A:E) в красный, но при условии, что не всегда есть такая информация, которую нужно окрасить в красный цвет. Чуть-чуть разобрался,
Sub поискЯчейки()
Dim w As Integer, s
With Application
.FindFormat.Clear: .ReplaceFormat.Clear: .ScreenUpdating = False
For Each s In Array("Событие", "Участок")
w = w + 1
.ReplaceFormat.Interior.Color = Choose(w, RGB(255, 255, 0), RGB(112, 48, 160))
[C:C].Replace s, s, xlPart, , , , , True
Next
End With
End Sub
осталось разобраться с окраской в красный цвет диапазон ячеек.
Вложения
Тип файла: xlsx на форум-3.xlsx (11.5 Кб, 13 просмотров)

Последний раз редактировалось lapin912; 21.10.2015 в 10:25.
lapin912 вне форума Ответить с цитированием
Старый 21.10.2015, 12:01   #2
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Чуть-чуть разобрался - в чем?

опишите задачу более просто, например, если в столбце С:С встретится слово "Событие", то закрасить ячейку в желтый, слово "Участок" в красный и т.д.

решение намного проще чем Вы пытаетесь сделать с Find - зачем? обычный цикл перебора ячеек с проверкой условия содержания ячейки
27102014 вне форума Ответить с цитированием
Старый 21.10.2015, 12:37   #3
lapin912
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 22
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
Чуть-чуть разобрался - в чем?

опишите задачу более просто, например, если в столбце С:С встретится слово "Событие", то закрасить ячейку в желтый, слово "Участок" в красный и т.д.

решение намного проще чем Вы пытаетесь сделать с Find - зачем? обычный цикл перебора ячеек с проверкой условия содержания ячейки
Совет помог, как подорожник для умирающего.
lapin912 вне форума Ответить с цитированием
Старый 21.10.2015, 12:39   #4
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

если не секрет, как решили задачу?
27102014 вне форума Ответить с цитированием
Старый 21.10.2015, 12:57   #5
AleksandrH
Заблокирован
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Цитата:
Сообщение от lapin912 Посмотреть сообщение
Совет помог, как подорожник для умирающего.
Но ведь можна перебрать в цикле и закрасить...черным
Код:
Sub f()
    Dim lr As Integer
    Dim i  As Long
    Dim cel As String
    lr = Range("B65553").End(xlUp).Row
    For i = 1 To lr
        cel = CStr(Cells(i, 2))
        If InStr("08300000, 09000000, 13300000, 16000000, 18300000, 00000000", cel) > 0 Then
            Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 2
        End If
    Next i
End Sub
AleksandrH вне форума Ответить с цитированием
Старый 21.10.2015, 13:04   #6
lapin912
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 22
Радость

Цитата:
Сообщение от AleksandrH Посмотреть сообщение
Но ведь можна перебрать в цикле и закрасить...черным
Код:
Sub f()
    Dim lr As Integer
    Dim i  As Long
    Dim cel As String
    lr = Range("B65553").End(xlUp).Row
    For i = 1 To lr
        cel = CStr(Cells(i, 2))
        If InStr("08300000, 09000000, 13300000, 16000000, 18300000, 00000000", cel) > 0 Then
            Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 2
        End If
    Next i
End Sub
Спасибо за реальную помощь, без нравоучений. Только почему-то закрашивает ячейку "В1", со значением 06000000, хотя условий нет.

Последний раз редактировалось lapin912; 21.10.2015 в 13:26.
lapin912 вне форума Ответить с цитированием
Старый 21.10.2015, 13:48   #7
AleksandrH
Заблокирован
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Можно поиграться с условиями
Код:
Sub f()
    Dim lr As Integer
    Dim i  As Long
    Dim cel As String
    lr = Range("B65553").End(xlUp).Row
    For i = 1 To lr
        cel = Cells(i, 2)
        If InStr(" 8300000, 9000000, 13300000, 16000000, 18300000, 0000000", " " & cel) > 0 Then
            Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 2
        End If
    Next i
End Sub
v2
Код:
Sub f1()
    Dim lr As Integer
    Dim i  As Long
    Dim cel As String
    lr = Range("B65553").End(xlUp).Row
    For i = 1 To lr
        cel = Cells(i, 2)
        If Len(cel) = 7 Then cel = "0" & cel
        If InStr("08300000, 09000000, 13300000, 16000000, 18300000, 00000000", cel) > 0 Then
            Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 2
        End If
    Next i
End Sub

Последний раз редактировалось AleksandrH; 21.10.2015 в 13:54.
AleksandrH вне форума Ответить с цитированием
Старый 21.10.2015, 13:54   #8
lapin912
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 22
По умолчанию

Цитата:
Сообщение от AleksandrH Посмотреть сообщение
Можно поиграться с условиями
Код:
Sub f()
    Dim lr As Integer
    Dim i  As Long
    Dim cel As String
    lr = Range("B65553").End(xlUp).Row
    For i = 1 To lr
        cel = Cells(i, 2)
        If InStr(" 8300000, 9000000, 13300000, 16000000, 18300000, 0000000", " " & cel) > 0 Then
            Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 2
        End If
    Next i
End Sub
Уже лучше, но все-равно красит первую строку.
lapin912 вне форума Ответить с цитированием
Старый 21.10.2015, 14:02   #9
AleksandrH
Заблокирован
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

sorki, етот код у меня первую строку не красит.
AleksandrH вне форума Ответить с цитированием
Старый 21.10.2015, 14:23   #10
lapin912
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 22
По умолчанию

Цитата:
Сообщение от AleksandrH Посмотреть сообщение
sorki, етот код у меня первую строку не красит.
Просто на форуме не весть документ, в оригинале шапка с объединенными ячейками "A:F".
lapin912 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(excel_2010_VBA) Поиск ячейки с данными и запись текста в соседнюю ячейку lapin912 Microsoft Office Excel 4 19.10.2015 03:26
Поиск по бд по нескольким параметрам Obey177 C# (си шарп) 2 26.09.2014 12:29
(excel_2010_VBA)Поиск и замена ячеек по условиям ячейками из другого файла. Alw Microsoft Office Excel 1 15.03.2013 04:15
Поиск по 3 параметрам Айдар БД в Delphi 8 03.12.2012 22:01
Поиск по параметрам amosik Microsoft Office Access 1 20.05.2012 01:01