Подсветка заголовков столбцов, если любая из ячеек в этом столбце содержит красный цвет - PullRequest
0 голосов
/ 15 марта 2019

Я новичок в мире макросов, я пытаюсь написать VBA, чтобы выделить заголовок столбца красным (7-я строка - заголовок столбца на моем листе), если какая-либо из ячеек в этом столбце содержит красный цвет, если нет, то заголовок столбца должен быть выделен зеленым цветом. Я попробовал приведенный ниже код, но он выделяет весь заголовок столбца зеленым цветом.

Dim headers As Range, body As Range

Set headers = ActiveSheet.UsedRange.Rows(7).Columns
Set body = ActiveSheet.UsedRange.Offset(1).Columns

For Each body In Range(Range("A11:BD11"), Range("a" & Rows.Count).End(xlUp))
    If body.Interior.Color = vbRed Then
        headers.Interior.Color = IIf(found, vbRed, vbGreen)
    End If
Next

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вы можете использовать:

Option Explicit

Sub test()

    Dim cell As Range, rng As Range

    With ThisWorkbook.Worksheets("Sheet1")

        'Set the range to loop
        Set rng = .Range("A11:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)

        'Loop range
        For Each cell In rng

            If cell.Interior.Color = vbRed Then
                'If cell interior is red then color Header(Row 7)
                .Cells(7, cell.Column).Interior.Color = vbGreen
                'Exit the loop after the first match
                Exit For
            Else
                'If there is no match leave no fill
                .Cells(7, cell.Column).Interior.ColorIndex = 0
            End If
        Next cell

    End With

End Sub
0 голосов
/ 15 марта 2019

попробуйте это:

Dim body As Range, ws As Worksheet

Set ws = ThisWorkbook.Sheets("Sheet1") 'Change Sheet1 for the name of the sheet

With ws
    For Each body In .Range(.Range("A11"), .Range("BD" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        If body.Interior.Color = vbRed And _
            Not .Cells(1, body.Column).Interior.Color = IIf(found, vbRed, vbGreen) Then 'To avoid doing it each time a cell on the same colour meets the criteria
            .Cells(1, body.Column).Interior.Color = IIf(found, vbRed, vbGreen)
       End If
    Next
End With

Вы ошиблись в диапазонах, а при циклировании диапазона вы не устанавливали переменную раньше.Это будет установлено в цикле For

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