条件格式化单元格的颜色索引

时间:2016-11-27 07:38:34

标签: excel excel-vba macros conditional-formatting vba

我有一张表格,其中有一些有条件格式的单元格。红细胞和蓝色每个细胞有2个规则。还有另一张表,我在宏中有一个If公式,用于检查那些条件格式化单元格中的颜色:

If Range("Q10").End(xlDown).Interior.ColorIndex = 33 Then
code
End If

但似乎这些代码不会起作用,因为单元格是有条件格式化的。宏运行时不输入If公式,直接转到End If。我如何确保它有效?

由于

1 个答案:

答案 0 :(得分:3)

有一种方法可以获取使用条件格式设置格式的单元格的Interior.ColorInterior.ColorIndex

Generic Sub的代码

Option Explicit

Sub GetFormatColor()

Dim CColor As Long
Dim CColorIndex As Long

' get the Color value of the first conditional formatting rule
CColor = Sheets("Sheet1").Range("Q10").FormatConditions(1).Interior.color

' get the ColorIndex value of the first conditional formatting rule
CColorIndex = Sheets("Sheet1").Range("Q10").FormatConditions(1).Interior.ColorIndex

End Sub

因此,在您的情况下,您需要找出您尝试查看的条件格式的规则。例如,我们想要检查Cell.ColorIndex Range("Q10"),并且颜色是您在条件格式中的规则集中的第一条规则。

此帖子的代码示例

' modify "Sheet1" to your sheet's name, where you set-up the conditional formatting
If Sheets("Sheet1").Range("Q10").FormatConditions(1).Interior.ColorIndex = 33 Then
    MsgBox "ColorIndex is : " & Sheets("Sheet1").Range("Q10").FormatConditions(1).Interior.ColorIndex
End If

如果您使用 Excel 2010 (或更高版本),则可以使用范围的DisplyFormat属性,以便使用以下代码:

If Sheets("Sheet1").Range("Q10").DisplayFormat.Interior.ColorIndex = 33 Then
    MsgBox "ColorIndex is : " & Sheets("Sheet1").Range("Q10").DisplayFormat.Interior.ColorIndex
End If