SO社区,
问题是我有一个通过条件格式设置为红色的单元格,但是当我检查单元格.Interior.ColorIndex
时,它会返回35
,这对应于浅绿色。< / p>
partNumber_1
,跨越单元格I12:L12 ?Range("I12").Interior.ColorIndex
返回35
?Range("partNumber_1").Interior.ColorIndex
返回35
.Interior.Color
(以获取长值),则返回13434828
,对应RGB(205, 255, 205)
partNumber_1
属于另一个命名范围ScannedPartNumbers
,它是条件格式公式中引用的命名范围。?Range("ScannedPartNumbers").Interior.ColorIndex
也会返回35
我通过VBA应用并删除条件格式,其中target
是ScannedPartNumbers
范围,fillColor
是3(红色),fontColor
是6(黄色)
Public Sub AddBlankCellFormatCondition(target As range, fillColor As Integer, Optional fontColor As Integer = 1)
target.Parent.Unprotect password:=Strings.Mypw
With target
.FormatConditions.Add Type:=xlBlanksCondition
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1)
.Interior.ColorIndex = fillColor
.Font.ColorIndex = fontColor
End With
End With
target.Parent.Protect password:=Strings.Mypw, userinterfaceonly:=True
End Sub
ScannedPartNumbers
指定范围内的所有单元格都已变为红色,但我还未能找到具有.Interior.ColorIndex
或.Interior.Color
值的单个单元格甚至远远类似于红色!
请帮忙吗?
答案 0 :(得分:3)
将条件格式视为一种透明度,它位于单元格格式的顶部。条件格式化实际上不会更改单元格的内部颜色,它会在其顶部放置一种新颜色,并强制Excel打印该颜色。
结果是单元格Color
和ColorIndex
值不会更改,因此VBA检查它们不会发现任何差异。
我可以建议您使用与条件格式相同的条件逻辑来检查要使用的单元格,而不是查看单元格的颜色吗?
Excel中的颜色选项严格用于显示目的,通常不应视为值。您无法按颜色排序或过滤,这是有充分理由的。尽管使用VBA可以做一些事情,但这通常不是一个好主意,并且通常更好地鼓励用户使用值来排序和过滤,而不是使用颜色。