Фильтр по цвету ячейки.

Автор Amator, 30 апреля 2014, 13:14

Amator

Здравствуйте.Нужен макрос фильтрации строк. Суть такова : по нажатию кнопки макрос должен "посмотреть" на лист "ЖРеал" в диапазон "АС14:АС433". Найти в єтом диапазоне последнюю непустую ячейку с цветом равному цвету ячейки АС18. И ниже найденной ячейки скрыть все пустые строки до строки 433. Если сможете буду благодарен.

Администратор

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
[свернуть]

Amator

Спасибо за огромную помощь !

Amator

Здравствуйте. А как в этом макросе вместо кода цвета 65535 взять цвет ячейки А1 в еременную?

Администратор

Sub Procedure_1()
   
    Dim lngColor As Long
   
   
    'В программе "Excel" могут быть проблемы с цветами.
    'Не всегда можно использовать любой цвет.
    'Протестируйте макрос, будет ли он работать с цветом.
    'Кроме того, на цвета влияют версии Excel. В какой-то
    'версии макрос может работать с каким-то цветом,
    'а в другой версии может не работать. Нужно тестировать во всех версиях.
    lngColor = Range("A1").Interior.Color

End Sub

Amator

С переменной макрос не работает. А как узнать код заливки ячейки ?

Администратор

Я вот так определяю. Делаю "Ctrl + G". Открывается окно.
В это окно вставляю вот такой код и нажимаю клавишу "Enter":
print activecell.Interior.Color

Amator

Ошибка: введенный текст не является правильной ссылкой или именем.

Администратор

А что Вы делает, что у Вас такая ошибка?

Amator

"Ctrl + G".
вставляю print activecell.Interior.Color "Enter":

Администратор

Вы делаете такие действия:?

  • запускаете программу "VBA";
  • нажимаете на клавиатуре сочетание клавиш "Ctrl + G";
  • должно появиться окно;
  • в это окно Вы вставляете вот этот текст:
    print activecell.Interior.Color
  • на клавиатуре нажимаете клавишу "Enter".

Amator

Получилось. Спасибо.