Выделение ячейки или строки, если ячейка в этой строке была условно отформатирована - PullRequest
0 голосов
/ 26 января 2019

У меня большой документ Excel с более чем 200 столбцами и сотнями строк.Я установил несколько правил условного форматирования, которые будут окрашивать ячейку в красный цвет, если ее текст неверен.(Я делаю формулы VLOOKUP на отдельном листе, поэтому в каждой строке должен быть определенный текст, иначе VLOOKUP выдает ошибку.) Проблема в том, что при большом количестве строк и столбцов трудно найти красные ячейки.Я ищу способ выделить всю строку желтым цветом или просто первой или второй ячейкой этой строки желтым, если в этой строке есть красная условно отформатированная ячейка.

Я искал в Google несколько часов, чтобы найти способ сделать это, и все указывает на то, что «это невозможно», в что мне трудно поверить.Мне удалось написать сценарий VBA, который работает, если я заполняю ячейку красным, но он не будет работать, когда он красный из правила условного форматирования.(Обратите внимание, я только изучаю VBA)

Sub FindingColor()
    Dim r1 As Range, r2 As Range, r As Range
    Dim nFirstRow As Long, nLastRow As Long, ic As Long

    Set r1 = ActiveSheet.UsedRange
    nLastRow = r1.Rows.Count + r1.Row - 1
    nFirstRow = r1.Row

    For ic = nFirstRow To nLastRow
        Set r2 = Intersect(r1, Rows(ic))
        For Each r In r2
            If r.Interior.ColorIndex = 3 Then
                r2(2).Interior.ColorIndex = 27
                Exit For
            End If
        Next r
    Next ic

End Sub

1 Ответ

0 голосов
/ 26 января 2019

Необходимо проверить свойство DisplayFormat, чтобы проверить наличие изменений, внесенных условным форматированием.

Sub FindingColor()
    Dim r1 As Range, r2 As Range, r As Range
    Dim nFirstRow As Long, nLastRow As Long, ic As Long

    Set r1 = ActiveSheet.UsedRange
    nLastRow = r1.Rows.Count + r1.Row - 1
    nFirstRow = r1.Row

    For ic = nFirstRow To nLastRow
        Set r2 = Intersect(r1, Rows(ic))
        For Each r In r2
            If r.displayformat.Interior.ColorIndex = 3 Then
                r2(2).Interior.ColorIndex = 27
                Exit For
            End If
        Next r
    Next ic

End Sub

Вы также можете использовать проверку на условия, которые фактически включили CFR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...