Vba: como aplicar formatação condicional às células
Você pode usar os seguintes métodos em VBA para aplicar formatação condicional às células:
Método 1: Aplicar formatação condicional com base em uma condição
Sub ConditionalFormatOne()
Dim rg As Range
Dim cond As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" B2:B11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'apply conditional formatting to any cell in range B2:B11 with value greater than 30
Set cond = rg.FormatConditions.Add(xlCellValue, xlGreater, " =30 ")
'define conditional formatting to use
With cond
.Interior.Color = vbGreen
.Font.Color = vbBlack
.Font.Bold = True
End With
End Sub
Método 2: aplicar formatação condicional com base em múltiplas condições
Sub ConditionalFormatMultiple()
Dim rg As Range
Dim cond1 As FormatCondition, cond2 As FormatCondition, cond3 As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" A2:A11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'specify rules for conditional formatting
Set cond1 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Mavericks ”)
Set cond2 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Blazers ”)
Set cond3 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Celtics ”)
'define conditional formatting to use
With cond1
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Italic = True
End With
With cond2
.Interior.Color = vbRed
.Font.Color = vbWhite
.Font.Bold = True
End With
With cond3
.Interior.Color = vbGreen
.Font.Color = vbBlack
End With
End Sub
Método 3: remover todas as regras de formatação condicional das células
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
Os exemplos a seguir mostram como usar cada método na prática com o seguinte conjunto de dados no Excel:
Exemplo 1: Aplicar formatação condicional com base em uma condição
Podemos usar a seguinte macro para preencher células no intervalo B2:B11 que possuem um valor maior que 30 com fundo verde, fonte preta e estilo de texto em negrito:
Sub ConditionalFormatOne()
Dim rg As Range
Dim cond As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" B2:B11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'apply conditional formatting to any cell in range B2:B11 with value greater than 30
Set cond = rg.FormatConditions.Add(xlCellValue, xlGreater, " =30 ")
'define conditional formatting to use
With cond
.Interior.Color = vbGreen
.Font.Color = vbBlack
.Font.Bold = True
End With
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que cada célula no intervalo B2:B11 que possui um valor maior que 30 está sujeita à formatação condicional.
Qualquer célula com valor igual ou inferior a 30 é simplesmente deixada de lado.
Exemplo 2: Aplicar formatação condicional com base em múltiplas condições
Podemos usar a seguinte macro para aplicar formatação condicional às células no intervalo A2:A11 com base no nome da equipe:
Sub ConditionalFormatMultiple()
Dim rg As Range
Dim cond1 As FormatCondition, cond2 As FormatCondition, cond3 As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" A2:A11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'specify rules for conditional formatting
Set cond1 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Mavericks ”)
Set cond2 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Blazers ”)
Set cond3 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Celtics ”)
'define conditional formatting to use
With cond1
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Italic = True
End With
With cond2
.Interior.Color = vbRed
.Font.Color = vbWhite
.Font.Bold = True
End With
With cond3
.Interior.Color = vbGreen
.Font.Color = vbBlack
End With
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que as células com os nomes dos times “Mavericks”, “Blazers” e “Celtics” estão todas sujeitas a formatação condicional específica.
O único time com o nome “Lakers” é deixado sozinho, pois não especificamos nenhuma regra de formatação condicional para células com esse nome de time.
Exemplo 3: Remover todas as regras de formatação condicional das células
Finalmente, podemos usar a seguinte macro para remover todas as regras de formatação condicional das células da planilha atual:
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que toda a formatação condicional foi removida de cada uma das células.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:
VBA: Como contar ocorrências de caracteres em uma string
VBA: como verificar se uma string contém outra string
VBA: uma fórmula para “Se” a célula contém”