Dicas de VBA – Contar Cores das Células

Por Jorge Paulino para o Pplware!

Muitas vezes utilizam-se no Excel cores para identificar diferentes prioridades ou estados de determinados pontos/itens. Essas identificações são preciosas ajudas na visualização mas podem também ser quantificadas para uma melhor contabilização ou para uma visualização gráfica.


No entanto, esta possibilidade apenas pode ser conseguida como recurso a VBA (Visual Basic for Applications), uma vez que as fórmulas disponíveis no Excel não o permitem.

Para adicionarmos esta função a uma folha de Excel devemos fazer o seguinte:

1 – Menu Tools – Macros – Visual Basic Editor ou ALT+F11
2 – Adicionar um novo módulo clicando com o botão direito ou através do menu Insert (Figura 1)

(Figura 1)

 

3 – Colocar a seguinte função no módulo criado

‘ ————————————————————————-
‘ Função que irá retornar o número de cores encontrada numa área

‘  (deverá ser inserido a área e o código da cor)
‘ ————————————————————————-

Public Function CountColors(rng As Range, color As Integer) As Integer
Dim rg As Range
Dim x As Integer

‘ Valor inicial
CountColors = 0

    ‘ Ciclo que irá percorrer todas as células definidas
    For Each rg In rng    

      ‘ Caso a cor interior (background) seja a escolhida
      If rg.Interior.ColorIndex = color Then
           ‘ Incrementa o contador
           x = x + 1           
      End If

    Next

    ‘ Define que a função (valor a retornar) tem o valor de x
    CountColors = x  

End Function

4 – Fechar o Editor de VBA e na folha de cálculo utilizar a função criada. No exemplo (Figura 2) deverá ser inserido o seguinte:
Figura 2

Célula C12: =CountColors(C3:C10;4)
Célula C13: =CountColors(C3:C10;19)
Célula C14: =CountColors(C3:C10;46)

O índice de cores do Microsoft Excel (ColorIndex) é composto por 56 cores (1 – 56) e podem verificar os códigos e correspondência de cores na imagem seguinte (Figura 3)

Figura 3

Em alternativa ao método rg.Interior.ColorIndex pode-se utilizar o método Color (rg.Interior.Color), sendo necessário alterar o argumento do tipo Integer para Long. Depois, pode-se utilizar no código o número da cor, algumas constantes de sistema disponíveis (vbGreen, vbRed, vbBlue, etc) ou o código RGB.
É importante lembrar que a alteração da cor em uma célula não origina nenhum evento e por isso o contador não é actualizado. É necessário que exista alguma edição na área definida ou alguma actualização manual (botão, evento, etc) para que funcione a 100%.

Mesmo com esta limitação, é uma função muito interessante e que irá certamente ter aplicações práticas para os leitores.

Escrito por: Jorge Paulino
Homepage: Página Autor: Jorge Paulino

  
     Pin It  

Arquivado na categoria: Generalidades, Informática, Programação


11 Comentários

  1. Era de valor que colocassem um tutorial como fazer um macro para o Outlook, de modo a que depois de lido um email na caixa de entrada esse fosse movido automaticamente para uma pasta especifica. Ficaria muito agradecido.

  2. Mais um bom artigo do meu amigo Jorge…

  3. “É importante lembrar que a alteração da cor em uma célula não origina nenhum evento e por isso o contador não é actualizado. É necessário que exista alguma edição na área definida ou alguma actualização manual (botão, evento, etc) para que funcione a 100%.”

    Há algum tempo precisei fazer um ficheiro e esta dar-me-ía imenso jeito se a actualização fosse automática… na altura tb não encontrei nenhuma descrição para a tornar automática.

    Não há uma forma qualquer de a tornar automática?

Deixe o seu comentário

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste site reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.