No artigo anterior, foi mostrado com é possível contar as cores das células ou a cor da fonte, mesmo sendo usada formatação condicional.
Usando duas funções desse artigo, a GetFormatConditionIndex() que verifica se a célula corresponde ao critério definido na formatação condicional, retornando 0 caso não corresponda e o número da formatação, caso corresponda, e a função ClearValue() que simplesmente remove o sinal de igual e garantir que o resultado final é numérico, podemos criar mais duas funções úteis, que nos permitem então verifica que cor está na célula ou na fonte.
Essas funções são a GetFontColorIndex() que verifica qual a cor da fonte que está definida na formatação condicional, indicando o parâmetro ConditionalFormat = True, ou sem ser na formatação condicional, não indicando nada ou o parâmetro ConditionalFormat = False.
' Verifica qual é a cor da fonte
Public Function GetFontColorIndex(ByVal rng As Range, _
Optional ByVal ConditionalFormat As Boolean = False) As Long
On Error GoTo errorGetFontColorIndex
If rng.Cells.Count = 1 Then
If ConditionalFormat Then
Dim cfIndex As Integer
cfIndex = GetFormatConditionIndex(rng)
If cfIndex > 0 Then
Dim temp As FormatCondition
Set temp = rng.FormatConditions(cfIndex)
GetFontColorIndex = temp.Font.ColorIndex
Else
GetFontColorIndex = 0
End If
Else
GetFontColorIndex = rng.Font.ColorIndex
End If
Else
GetFontColorIndex = 0
End If
Exit Function
errorGetFontColorIndex:
GetFontColorIndex = 0
End Function
A GetFillColorIndex() verifica qual a cor da célula/fundo que está definida na formatação condicional, indicando o parâmetro ConditionalFormat = True, ou sem ser na formatação condicional, não indicando nada ou o parâmetro ConditionalFormat = False.
' Verifica qual é a cor de fundo
Public Function GetFillColorIndex(ByVal rng As Range, _
Optional ByVal ConditionalFormat As Boolean = False) As Long
On Error GoTo errorGetFillColorIndex
If rng.Cells.Count = 1 Then
If ConditionalFormat Then
Dim cfIndex As Integer
cfIndex = GetFormatConditionIndex(rng)
If cfIndex > 0 Then
Dim temp As FormatCondition
Set temp = rng.FormatConditions(cfIndex)
GetFillColorIndex = temp.Interior.ColorIndex
Else
GetFillColorIndex = 0
End If
Else
GetFillColorIndex = rng.Interior.ColorIndex
End If
Else
GetFillColorIndex = 0
End If
Exit Function
errorGetFillColorIndex:
GetFillColorIndex = 0
End Function
Como o valor é verificado em apenas uma célula, pois células diferentes poderiam ter cores diferentes, é verificado se o número de células indicado é igual a 1 para que a função seja válida.
São duas funções simples, mas que podem ser interessantes, especialmente para uma melhor aplicação das formulas referidas no artigo anterior sobre Contar Cores na Formatação Condicional.
Para as usar, é só preciso fazer:
=GetFillColorIndex(A1;TRUE)
=GetFillColorIndex(A1) ou =GetFillColorIndex(A1;FALSE)
=GetFontColorIndex(A1;TRUE)
=GetFontColorIndex(A1) ou =GetFontColorIndex(A1;FALSE)
Espero que vos sejam úteis!
1 comentários:
Excelente. Mas eu só estou recebendo de retorno a cor -4142 (na função FILL) no que estou errando?
Enviar um comentário