Pplware

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

Exit mobile version