Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

Excel: Verificar a Cor na Formatação Condicional

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:

Said disse...

Excelente. Mas eu só estou recebendo de retorno a cor -4142 (na função FILL) no que estou errando?



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject
Google-Translate-ChineseGoogle-Translate-Portuguese to FrenchGoogle-Translate-Portuguese to GermanGoogle-Translate-Portuguese to ItalianGoogle-Translate-Portuguese to JapaneseGoogle-Translate-Portuguese to EnglishGoogle-Translate-Portuguese to RussianGoogle-Translate-Portuguese to Spanish

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico