如果该列中的任何单元格包含红色,则突出显示列标题

Posted

技术标签:

【中文标题】如果该列中的任何单元格包含红色,则突出显示列标题【英文标题】:Highlighting column headings if any of the cells in that column contains red colour 【发布时间】:2019-03-15 12:42:17 【问题描述】:

我是宏观世界的新手,我正在尝试编写 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

【问题讨论】:

什么是found?它既没有声明也没有设置。 【参考方案1】:

试试这个:

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 循环中设置

【讨论】:

For Each 语句中的 Range 有问题。 感谢 Damian,这里认为是哪一行。我使用第 7 行作为标题 谢谢 Damian,哪一行被认为是这里的标题。我使用第 7 行作为标题 很抱歉,我忘记声明在该范围内的行的位置。如果对您有帮助,请将其标记为答案,以便其他人找到它。【参考方案2】:

你可以使用:

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

【讨论】:

以上是关于如果该列中的任何单元格包含红色,则突出显示列标题的主要内容,如果未能解决你的问题,请参考以下文章

Excel:如果在另一列中发现重复的单元格值,则突出显示绿色

如果活动单元格(两行或更多行)位于同一列中,则突出显示单元格

如果另一列中的相应行包含特定值,我想使用条件格式突出显示一列中的单元格

如果某列范围内的所有单元格均为空白,则删除 Excel 中的一行

当必须使用同一列中的不同值填充单元格时,如何填写该列中的空白单元格?

有条件地格式化 Python 熊猫单元格