Скрыть строки в книге Excel, исключая цвет ячейки - макрос VBA - PullRequest
0 голосов
/ 10 января 2020

У меня есть макрос, который будет скрывать строки с указанным c цветом ячейки, но мне нужно наоборот. Скрыть все строки во всей книге, кроме указанных c цветов.

Sub Hiderows()
Dim r As Range
Application.ScreenUpdating = False
Range("A7").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    For Each r In Selection
        If r.Interior.Color = RGB(255, 124, 128) Or r.Interior.Color = RGB(255, 255, 163) Then
            r.EntireRow.Hidden = True
        End If
    Next
Range("A7").Select
Application.ScreenUpdating = True
End Sub

Примечание. - Знак <> здесь не работает. - Также есть ли способ, как я могу ускорить выполнение

Спасибо,

1 Ответ

1 голос
/ 10 января 2020

ОК, теперь я вижу проблему.

Цель состоит в том, чтобы проверить несколько ячеек подряд, скрывая эту строку, если она не имеет цвета. Но если у ячейки B8 есть целевой цвет ... что произойдет, если у A8 нет? A8 запускает логику c и скрывает строку. Упс.

Попробуйте. Он читает всю строку, проверяя цвет, и, найденный, останавливает чтение этой строки и обрабатывает логику скрытия c, а затем переходит к следующей строке:

Sub Hiderows()
    Dim r As Range
    Dim hasColor As Boolean
    hasColor = False

    Application.ScreenUpdating = False
    Range("A7").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
        For Each r In Selection.Rows
            For Each c In r.Columns
                If c.Interior.Color = RGB(255, 124, 128) Or c.Interior.Color = RGB(255, 255, 163) Then
                    hasColor = True
                    Exit For
                End If
            Next

            r.EntireRow.Hidden = Not hasColor
            hasColor = False
        Next
    Range("A7").Select
    Application.ScreenUpdating = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...