Enchimento automático de cores de acordo com os valores na célula na planilha

4

Pergunta: É possível preencher cada célula de uma planilha com uma cor cujo valor em escala de cinza seja igual ao valor da célula?

Explicação:

Considere que tenho uma planilha como segue:

Todososvaloresestãoentre0e255(oquecorrespondea256coresemescaladecinza).Agoraqueropreenchercadacélulacomacorcujovaloréovalornacélula.Assim,asaídaesperadaéaseguinte:

Além disso, veja que a cor da fonte em cada célula é preto ou branco correspondente à cor do plano de fundo.

Existe algum método simples no Excel para executar isso em poucas etapas ou de uma só vez?

    
por user172056 08.11.2012 / 14:37

2 respostas

5

Crie uma macro que percorra suas células, leia o valor na célula e atribua a ela a cor da seguinte forma:

Range("A1:A6").Interior.Color = RGB(200,160,35)
    
por 08.11.2012 / 14:49
3

TheUser1024 tem razão e tem o meu voto.

Aqui está uma solução pronta para uso:

Public Sub Demo()
  Dim cel As Range
  Dim myRange As Range

  Set myRange = Range("A1:E10")

  For Each cel In myRange
    cel.Interior.Color = RGB(cel.Value, cel.Value, cel.Value)
    If cel.Value > 127 Then
      cel.Font.Color = RGB(0, 0, 0)
    Else
      cel.Font.Color = RGB(255, 255, 255)
    End If
  Next cel
End Sub

Editar:

Este código não será violado no caso de strings ou valores negativos ...

Public Sub Demo()
  Dim cel As Range
  Dim greytone As Long
  Dim myRange As Range

  Set myRange = Range("A1:E10")

  For Each cel In myRange
    greytone = CLng(Abs(Val(cel.Value)))
    cel.Interior.Color = RGB(greytone, greytone, greytone)
    If greytone > 127 Then
      cel.Font.Color = RGB(0, 0, 0)
    Else
      cel.Font.Color = RGB(255, 255, 255)
    End If
  Next cel
End Sub
    
por 08.11.2012 / 16:22