如果该列中的任何单元格包含红色,则突出显示列标题
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 中的一行