Além da Formatação Condicional

Às vezes o Excel é irritante: como faço para que a formatação condicional não pare no primeiro critério?

Por exemplo: numa célula quero que o número fique em cor vermelha quando o valor dentro da célula da esquerda for igual a zero e, ao mesmo tempo, a mesma célula deve apresentar uma borda se o número for maior que zero… Olhem a imagem:

Vamos adicionar um pouco de código VBA (Visual Basic dentro do Excel) para resolver o problema, na guia da planilha (bem lá embaixo do Excel) clique com o botão da direita e selecione Exibir Código:

O VBA (a janela do Visual Basic)  vai abrir exatamente onde devemos inserir o código:

Bom, agora é só acrescentar este código:


Private Sub Worksheet_Change(ByVal Target As Range)
Set MyPage = Range("b2: b20 ") 'aqui definir o intervalo
' atenção: intervalos muito grandes deixará o excel muito lento!
For Each Cell In MyPage
' se célula for maior do que zero
If Cell.Value > 0 Then
'Cell.Interior.ColorIndex = 6 ' deixar se quiser mudar o fundo
' fazer as bordas esquerda, embaixo, direita e alto:
With Cell.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Cell.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Cell.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Cell.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Else ' tirar as bordas caso contrário
Cell.Borders(xlEdgeLeft).LineStyle = xlNone
' olhar borda de baixo da célula de cima antes de apagar:
Cell.Borders(xlEdgeTop).LineStyle = Cell.Offset(-1, 0).Borders(xlEdgeBottom).LineStyle
Cell.Borders(xlEdgeBottom).LineStyle = xlNone
Cell.Borders(xlEdgeRight).LineStyle = xlNone
End If
' se célula do lado esquerda for zero
If Cell.Offset(0, -1).Value = 0 Then
Cell.Font.ColorIndex = 3 ' cor vermelha
Else ' colocar cor preta no caso contrário
Cell.Font.ColorIndex = 0 ' cor preta
End If
Next
End Sub

Agora cole alguns zeros e outros números na coluna A (entre A2 e A20) e na coluna B alguns valores positivos e negativos (entre B2 e B20) e teste os resultados!

Links úteis:

http://www.ozgrid.com/Excel/font-formats.htm

http://en.kioskea.net/forum/affich-21716-conditional-formatting-more-than-3-in-excel

http://www.mrexcel.com/forum/showthread.php?t=36072

http://www.mrexcel.com/forum/showthread.php?t=74483

One thought on “Além da Formatação Condicional

  1. Será que eu consigo fazer isso pra criar uma cadeia de validação de dados em lista?

Comments are closed.