细胞的内部。颜色指数值与可见的不同

时间:2017-01-17 20:30:50

标签: excel vba excel-vba conditional-formatting

SO社区,

问题是我有一个通过条件格式设置为红色的单元格,但是当我检查单元格.Interior.ColorIndex时,它会返回35,这对应于浅绿色。< / p>

上下文信息

  1. 相关单元格是合并单元格,名为partNumber_1,跨越单元格I12:L12
  2. 在即时窗口中,?Range("I12").Interior.ColorIndex返回35
  3. ?Range("partNumber_1").Interior.ColorIndex返回35
  4. 如果我将2.和3.更改为.Interior.Color(以获取长值),则返回13434828,对应RGB(205, 255, 205)
  5. 相关命名范围partNumber_1属于另一个命名范围ScannedPartNumbers,它是条件格式公式中引用的命名范围。
  6. ?Range("ScannedPartNumbers").Interior.ColorIndex也会返回35
  7. 我通过VBA应用并删除条件格式,其中targetScannedPartNumbers范围,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值的单个单元格甚至远远类似于红色!

    请帮忙吗?

1 个答案:

答案 0 :(得分:3)

将条件格式视为一种透明度,它位于单元格格式的顶部。条件格式化实际上不会更改单元格的内部颜色,它会在其顶部放置一种新颜色,并强制Excel打印该颜色。

结果是单元格ColorColorIndex值不会更改,因此VBA检查它们不会发现任何差异。

我可以建议您使用与条件格式相同的条件逻辑来检查要使用的单元格,而不是查看单元格的颜色吗?

Excel中的颜色选项严格用于显示目的,通常不应视为值。您无法按颜色排序或过滤,这是有充分理由的。尽管使用VBA可以做一些事情,但这通常不是一个好主意,并且通常更好地鼓励用户使用值来排序和过滤,而不是使用颜色。