none
Mudar a cor de uma célula alterando os valores RGB a partir de valores RGB da planilha RRS feed

  • Pergunta

  • Boa tarde,

    Tenho uma planilha onde na sheet1 eu entro com 3 valores diferentes em 3 células diferentes (ex.: E3=88.4, F3=0.1, G3=3.9). Esses valores correspondem a uma cor CIE-Lab. Na sheet2 eu pego esses valores e através de fórmulas consigo converter a valores de cores RGB que também estão em 3 células diferentes. (ex.: O R está na célula V2=225, o G está na célula W2=221 e o B está na célula X2=214)

    A ideia é a seguinte: 

    Entrar com valores na sheet1 que serão convertidos em valores RGB na sheet2 (conforme mencionado anteriormente). e com esses valores de RGB da sheet2 eu conseguir alterar a cor de uma célula na sheet1 (ex: mudar a cor da célula H3 para a correspondente RGB(225,221,214)

    Eu não entendo nada de VBA, por isso se alguma alma caridosa puder fazer uma espécie de passo-a-passo eu agradeceria muito.

    Abraço



    • Editado Leandro Zuca quinta-feira, 1 de maio de 2014 17:41 palavra repetida
    quinta-feira, 1 de maio de 2014 17:39

Respostas

  • Boa tarde Leandro.

    Sua dúvida é simples, mas caso a explicação não seja clara, basta perguntar. Segue o passo a passo:

    1. Pressione 'Alt+F11' para abrir o Visual Basic
    2. Clique onde aparece 'VBA  Project(NomeSuaPlanilha) com botão direito, vá em 'Inserir >> Módulo'
    3. Cole o código abaixo. Ele funcionará para a aba ativa, ou seja, apenas se vc executá-lo na aba que contém os dados e que deve retornar a saída.
    Sub Colorir()
    '
    ' Exibe a cor escolhida por um código RGB.
    '
    ' Considera: RGB = R + 256*G + 256^2*B
    '
    
    On Error GoTo FimInesperado
    
    Dim Cores(1 To 3)
    
    Destino = "H3"          'Onde a cor será alterada
    
    'ex.: O R está na célula V2=225, o G está na célula W2=221 e o B está na célula X2=214
    
    Cores(1) = ActiveSheet.Range("V2")
    Cores(2) = ActiveSheet.Range("W2")
    Cores(3) = ActiveSheet.Range("X2")
    
    ActiveSheet.Range(Destino).Interior.Color = RGB(Cores(1), Cores(2), Cores(3))
        
    Exit Sub
    
    FimInesperado:
    MsgBox "Erro na Entrada de Dados!" & vbNewLine & "Verifique os Valores Digitados!" & vbNewLine & vbNewLine & Err.Description, vbCritical, "Operação Não Realizada!"
    End Sub

    Caso deseje que funcione em outra aba basta basta substituir 'ActiveSheet' por 'Sheets(NomeAba), por exemplo (existem outras formas, mas a melhor depende do caso).

    Consegui ser claro?

    Abraço.


    Filipe Magno

    quinta-feira, 1 de maio de 2014 19:00