Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Amator от 30 апреля 2014, 13:14

Название: Фильтр по цвету ячейки.
Отправлено: Amator от 30 апреля 2014, 13:14
Здравствуйте.Нужен макрос фильтрации строк. Суть такова : по нажатию кнопки макрос должен "посмотреть" на лист "ЖРеал" в диапазон "АС14:АС433". Найти в єтом диапазоне последнюю непустую ячейку с цветом равному цвету ячейки АС18. И ниже найденной ячейки скрыть все пустые строки до строки 433. Если сможете буду благодарен.
Название: Re: Фильтр по цвету ячейки.
Отправлено: Администратор от 30 апреля 2014, 17:50
Amator, макрос сделан для столбца A и диапазона A1:A10. Задавая вопрос на этом Форуме, делайте удобные задания для администратора, чтобы Вам ответили. А затем подставляйте свои значения в макросы, которые выложил администратор.

Excel умеет искать не только данные, но и оформление.
Часть кода, который я выложил в этом сообщении, получен с помощью макрорекордера.

Макрос
Sub Макрос2()
   
    Dim rngFind As Excel.Range
       
    'Настройка поиска на поиск оформления.
    With Application.FindFormat.Interior
        'Жёлтая заливка.
        .Color = 65535
    End With
   
    'Поиск на активном листе, в столбце 1.
    'What:="?" - знак вопроса - это специальный символ
        'в данном случае. Который означает любой один символ.
    'SearchDirection:=xlPrevious - поиск снизу вверх по столбцу 1.
    Set rngFind = Columns(1).Find(What:="?", LookIn:=xlValues, LookAt:=xlPart, _
        SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False, _
        SearchFormat:=True)
       
    'Убирание из поиска оформления, чтобы не мешало,
        'т.к. макрос изменит настройки окна "Найти и заменить."
    Application.FindFormat.Clear
   
    'Если не будет найдено, то в переменной "rngFind"
        'будет слово "Nothing".
    If rngFind Is Nothing Then
        'Выход из процедуры.
        Exit Sub
    End If
   
    'Скрытие строк от найденной строки + 1 строка и до последней нужной.
    Rows(rngFind.Row + 1 & ":10").Hidden = True
   
End Sub
[свернуть]
Название: Re: Фильтр по цвету ячейки.
Отправлено: Amator от 01 мая 2014, 11:10
Спасибо за огромную помощь !
Название: Re: Фильтр по цвету ячейки.
Отправлено: Amator от 04 мая 2014, 16:22
Здравствуйте. А как в этом макросе вместо кода цвета 65535 взять цвет ячейки А1 в еременную?
Название: Re: Фильтр по цвету ячейки.
Отправлено: Администратор от 04 мая 2014, 16:26
Sub Procedure_1()
   
    Dim lngColor As Long
   
   
    'В программе "Excel" могут быть проблемы с цветами.
    'Не всегда можно использовать любой цвет.
    'Протестируйте макрос, будет ли он работать с цветом.
    'Кроме того, на цвета влияют версии Excel. В какой-то
    'версии макрос может работать с каким-то цветом,
    'а в другой версии может не работать. Нужно тестировать во всех версиях.
    lngColor = Range("A1").Interior.Color

End Sub
Название: Re: Фильтр по цвету ячейки.
Отправлено: Amator от 04 мая 2014, 21:31
С переменной макрос не работает. А как узнать код заливки ячейки ?
Название: Re: Фильтр по цвету ячейки.
Отправлено: Администратор от 04 мая 2014, 21:37
Я вот так определяю. Делаю "Ctrl + G". Открывается окно.
В это окно вставляю вот такой код и нажимаю клавишу "Enter":
print activecell.Interior.Color
Название: Re: Фильтр по цвету ячейки.
Отправлено: Amator от 04 мая 2014, 21:48
Ошибка: введенный текст не является правильной ссылкой или именем.
Название: Re: Фильтр по цвету ячейки.
Отправлено: Администратор от 04 мая 2014, 21:50
А что Вы делает, что у Вас такая ошибка?
Название: Re: Фильтр по цвету ячейки.
Отправлено: Amator от 04 мая 2014, 21:57
"Ctrl + G".
вставляю print activecell.Interior.Color "Enter":
Название: Re: Фильтр по цвету ячейки.
Отправлено: Администратор от 04 мая 2014, 22:02
Вы делаете такие действия:?
Название: Re: Фильтр по цвету ячейки.
Отправлено: Amator от 04 мая 2014, 22:51
Получилось. Спасибо.