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)
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)
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
|
|
|
Tweet |
Pin It
|
Arquivado na categoria: Generalidades, Informática, Programação
11 Comentários
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.
















Muito bom
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.
Penso ser isto http://pplware.sapo.pt/truques-dicas/dica-aprenda-a-criar-regras-no-microsoft-outlook/
Não por acaso não é isso, o que isso faz é: move um email para uma pasta especifica quando recebes, ou seja, logo que recebes o email ele nem fica na caixa de entrada é logo movido para a pasta.
O que eu necessito é que depois de eu ler o email não seja necessário me preocupar em move-lo para uma determinada pasta, eu gostaria que essa tarefa fosse executada automaticamente pelo Outlook. Eu tenho a necessidade de guardar muitos dos email que recebo no trabalho, mas queria que eles ficassem na caixa de entrada até ser lidos.
Mais um bom artigo do meu amigo Jorge…
Obrigado João
“É 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?
Mas era algo semelhante usando a actualização cores/formatação ou o ficheiro é diferente?
É que existem muitos eventos que podem utilizados, dependendo da situação.
Sim a formula exactamente como esta mas a actualizar no momento em que mudamos a cor da célula sem ser necessário actualizar a formula.
Pois, mas isso não dá (pelo menos que tenha conhecimento), quanto muito pode-se fazer isso quando se alterar a selecção da célula ou outro evento.
Sempre melhora um pouco, mas não é uma solução a 100%
Ok obrigado. Tb não havia encontrado nada na pesquisa que fiz. Tive de optar por outro tipo de contagem.