问题

我在Excel 2007中使用颜色尺度进行条件格式化,我很难找到有条件格式化的单元格的填充颜色代码.我知道Interior.Color返回默认颜色值,但在使用条件格式时没有帮助.我对这样做的困难感到非常惊讶.

谢谢。

  最佳答案

您可以访问fomation条件的内部颜色(不是目前的单元格),如下所示,假设这是在单元格上应用的第一个条件:

 Range("A1").FormatConditions(1).interior.color
 

这是一个函数,它将返回单元格包含的所有条件格式的颜色代码.如果没有条件,它将不会返回任何内容,如果有条件但没有为它设置颜色,那么它告诉你“没有”.

 Function ConditionalColor(ByVal cell As Range)

Dim colors As String
Dim i As Long

For i = 1 To Range(cell.Address).FormatConditions.count
    If Range(cell.Address).FormatConditions(i).Interior.Color <> 0 Then
        colors = colors & "Condition " & i & ": " & _
        Range(cell.Address).FormatConditions(i).Interior.Color & vbLf
    Else
        colors = colors & "Condition " & i & ": None" & vbLf
    End If
Next

If Len(colors) <> 0 Then
    colors = Left(colors, Len(colors) - 1)
End If

ConditionalColor = colors

End Function
 

更新: 如果你很好奇(我是),Excel使用的颜色代码实际上是BGR,而不是RGB.所以如果你想将代码转换为RGB值,你可以使用这个:

 Function GetRGB(ByVal cell As range) As String

Dim R As String, G As String
Dim B As String, hexColor As String
hexCode = Hex(cell.Interior.Color)

'Note the order excel uses for hex is BGR.
B = Val("&H" & Mid(hexCode, 1, 2))
G = Val("&H" & Mid(hexCode, 3, 2))
R = Val("&H" & Mid(hexCode, 5, 2))

GetRGB = R & ":" & G & ":" & B
End Function
 

  相同标签的其他问题

excelcolorsexcel-vbaformattingconditionalvba