| Fórum Excel Bácico, Avançado e Vba Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA... |
| | Validação de cores | |
| | Autor | Mensagem |
---|
juniorcadj
Mensagens : 4 Data de inscrição : 12/03/2014
| Assunto: Validação de cores Qua Mar 12, 2014 5:00 am | |
| Boa noite, pessoal.
Possuo um cronograma, onde utilizo 4 cores diferentes para o preenchimento das células, a depender do tipo de serviço, em uma linha do tempo. Existe alguma forma de eu fazer com que nestes espaços, apenas estas 4 cores estejam disponíveis para a coloração? Ou se só for possível para a planilha toda, que seja.
Tenho esta preocupação, pois faço uma contagem das células pela cor, através de uma macro. Então, se a pessoa colorir de verde, por exemplo, mas que não seja o verde que eu utilizo para o filtro da macro, irá me gerar falsos resultados. Uma solução para isso seria criar vários filtros, com os vários verdes disponíveis, por exemplo, e depois realizar uma soma, assim como para as outras 3 cores.
Mas o ideal mesmo, seria esta espécie de "validação de cores".
Grato desde já por vossas atenções.
Att,
Carlos Junior | |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Validação de cores Qua Mar 12, 2014 5:10 pm | |
| Bom dia!
Uma pergunta, porque que ao invés de cor, não se preenche as células (coluna Adjacente aos dados), com números?
Por favor, indique as postagem cruzadas!! http://usuariosdoexcel.forumeiros.com/t132-validacao-de-cores#396
Att | |
| | | juniorcadj
Mensagens : 4 Data de inscrição : 12/03/2014
| Assunto: Re: Validação de cores Sex Mar 14, 2014 3:06 am | |
| Boa noite, Alexandre.
Pois eu já preencho as células com números, indicando os avanços dado aos projetos em porcentagens. E também as coloro para diferir os processos. ( projeto, licenciamento, obra e verba ), e gerar um layout de visualização em uma linha do tempo para os meus gerentes. Preciso das cores de qualquer jeito rs E não sou apenas quem utilizará esta ferramenta, mas todos os outros companheiros de trabalho. Então, colocar mais um campo para diferir a fase não seria a ideia no momento.
Saberia me dizer se há alguma solução para este meu questionamento??
Caso não haja solução, será que talvez eu poderia te enviar um código, e você tentar me ajudar em relação a este código fazer uma espécie de "loop".?? Pois o código que eu tenho de contagem das células coloridas, funciona apenas no momento que eu executo. Se eu mudo a cor de alguma célula, apago, ou coloro outra célula no intervalo desejado, a macro não conta. Gostaria que fosse algo dinâmico, como uma fórmula de soma, por exemplo.
Grato desde já.
Carlos Junior | |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Validação de cores Sex Mar 14, 2014 10:55 pm | |
| Boa noite!!
Poderia me mandar um arquivo modelo?
Talvez, eu possa ajuda-lo...
Deposite no sendspace e mande o link aqui no seu post.
Att | |
| | | juniorcadj
Mensagens : 4 Data de inscrição : 12/03/2014
| Assunto: Re: Validação de cores Sáb Mar 15, 2014 1:35 am | |
| Boa noite, Alexandre.
Grato pela atenção.
Segue o link do arquivo no sendspace. ( coloquei desta forma, pois não me deixa postar endereço )
file/0354gs
Existem duas macros na forma de funções que fazem o que eu falei a respeito da contagem das células, porém as mesmas não são dinâmicas. E hoje mesmo houve um ocorrido em relação a minha preocupação. Um colega coloriu as células com um outro azul, com um outro roxo, com um outro laranja que o utilizado como padrão no cronograma. Caso não dê para validar as cores, teria-se que se criar aquilo que eu sugeri, creio eu, de vários campos de filtros com diversos roxos, diversos verdes etc e depois realizar uma contagem. Mas para isso, necessito também que a macro seja dinâmica rs
À disposição. Obrigado. | |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Validação de cores Sáb Mar 15, 2014 3:05 am | |
| Boa noite!!
Está protegido!!
Att | |
| | | juniorcadj
Mensagens : 4 Data de inscrição : 12/03/2014
| Assunto: Re: Validação de cores Sáb Mar 15, 2014 6:08 am | |
| Boa noite, Alexandre.
Desculpe pela falta de atenção. Segue uma nova planilha, com algumas modificações. Novo link: file/ct7eu4 Senha: eng
Consegui resolver parcialmente o meu problema. Vou tentar te explicar! Consegui resolver o problema da "validação de cores", colocando uma formatação condicional que me atende muito bem. O problema é: possuo dois códigos para contagem de células coloridas (um quando a coloração da célula for feita de forma manual e outro para quando a coloração da célula for feita por meio de formatação condicional - que no momento é o meu caso), mas nenhum dos dois funcionava de forma automática, até que coloquei o código abaixo e problema da automação foi resolvido:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Calculate End Sub
Até aí tudo bem. Testei a planilha como se a coloração das células fossem feitas de forma manual e funcionou perfeitamente bem, mas quando tentei utilizar o código para a contagem quando a coloração é feita por formatação condicional está dando problema. Creio que o problema seja no meu intervalo de dados, uma vez que os meus estão em porcentagem, e este fato está gerando algum problema no código, ou o próprio código tem problema em relação à formatação condicional que eu utilizo, uma vez que a formatação de um célula depende de outras células. As formatações que eu irei utilizar estão como modelo no range J13:AG14
Se puder tentar resolver este problema, ficarei extremamente grato. Ou seja, fazer com o que o código que eu tenha, atenda o intervalo que eu tenho que é em forma de porcentagem.
Obrigado desde já, Alexandre.
Segue abaixo o código mencionado:
Option Explicit
Public Function ContaCelulaColoridaFormatCond(rngColorInfo As Range, Intervalo As Range) As Long Dim rConta As Range For Each rConta In Intervalo.Cells If RetornaCorDeFundoCondicional(rConta) = rngColorInfo.Interior.ColorIndex Then ContaCelulaColoridaFormatCond = ContaCelulaColoridaFormatCond + 1 End If Next End Function
Public Function RetornaCorDeFundoCondicional(ByVal rngCelula As Range) As Long Dim FormatCondition As FormatCondition
RetornaCorDeFundoCondicional = -1 For Each FormatCondition In rngCelula.FormatConditions If StatusDoFormatoCondicional(FormatCondition) Then If Not IsNull(FormatCondition.Interior.ColorIndex) Then RetornaCorDeFundoCondicional = FormatCondition.Interior.ColorIndex End If Exit For End If Next FormatCondition
End Function
Public Function StatusDoFormatoCondicional(ByVal FormatCondition As FormatCondition) As Boolean Dim FormulaTransformada As String Dim Operator As Long Dim Formula1 As String Dim Formula2 As String Dim Cell As Range Dim CellValue As String
Application.Volatile FormulaTransformada = FormatCondition.Formula1 Set Cell = FormatCondition.Parent
On Error Resume Next Operator = FormatCondition.Operator On Error GoTo 0 If Operator > 0 Then Formula1 = FormatCondition.Formula1 On Error Resume Next If Left(Formula1, 1) = "=" Then Formula1 = Mid(Formula1, 2) Formula2 = FormatCondition.Formula2 On Error GoTo 0 If Left(Formula2, 1) = "=" Then Formula2 = Mid(Formula2, 2) If VarType(Cell.Value) = vbString Then CellValue = """" & Cell.Value & """" Else CellValue = CDbl(Cell.Value) End If Select Case Operator Case xlBetween: FormulaTransformada = "AND(" & Formula1 & "<=" & CellValue & "," & CellValue & "<=" & Formula2 & ")" Case xlNotBetween: FormulaTransformada = "OR(" & Formula1 & ">" & CellValue & "," & CellValue & ">" & Formula2 & ")" Case xlEqual: FormulaTransformada = CellValue & "=" & Formula1 Case xlNotEqual: FormulaTransformada = CellValue & "<>" & Formula1 Case xlGreater: FormulaTransformada = CellValue & ">" & Formula1 Case xlLess: FormulaTransformada = CellValue & "<" & Formula1 Case xlGreaterEqual: FormulaTransformada = CellValue & ">=" & Formula1 Case xlLessEqual: FormulaTransformada = CellValue & "<=" & Formula1 End Select Else 'Caso a formatação condicional seja uma fórmula FormulaTransformada = FormatCondition.Formula1 FormulaTransformada = Replace(FormulaTransformada, ";", ",") 'Traduzindo a função SE para o inglês FormulaTransformada = Replace(FormulaTransformada, "SE(", "IF(") 'Adicione traduções para as funções que você usar 'Exemplos: 'FormulaTransformada = Replace(FormulaTransformada, "MÉDIA(", "AVG(") 'FormulaTransformada = Replace(FormulaTransformada, "SOMA(", "SUM(") 'FormulaTransformada = Replace(FormulaTransformada, "SOMASE(", "SUMIF(") FormulaTransformada = Application.ConvertFormula(FormulaTransformada, xlA1, xlR1C1, xlRelative, FormatCondition.AppliesTo.Resize(1, 1)) FormulaTransformada = Application.ConvertFormula(FormulaTransformada, xlR1C1, xlA1, xlRelative, Cell) End If StatusDoFormatoCondicional = Application.Evaluate(FormulaTransformada)
End Function
| |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Validação de cores Sáb Mar 15, 2014 3:08 pm | |
| Bom dia!! - Citação :
- Creio que o problema seja no meu intervalo de dados, uma vez que os meus estão em porcentagem, e este fato está gerando algum problema no código
Que problema exatamente ocorre, um erro de copilação? ou não faz a formatação como deveria? Att | |
| | | Conteúdo patrocinado
| Assunto: Re: Validação de cores | |
| |
| | | | Validação de cores | |
|
Tópicos semelhantes | |
|
| Permissões neste sub-fórum | Não podes responder a tópicos
| |
| |
| |
|