Vba: come applicare la formattazione condizionale alle celle
È possibile utilizzare i seguenti metodi in VBA per applicare la formattazione condizionale alle celle:
Metodo 1: applica la formattazione condizionale in base a una condizione
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
Metodo 2: applica la formattazione condizionale in base a più condizioni
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
Metodo 3: rimuovi tutte le regole di formattazione condizionale dalle celle
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica con il seguente set di dati in Excel:
Esempio 1: applicare la formattazione condizionale in base a una condizione
Possiamo utilizzare la seguente macro per riempire le celle nell’intervallo B2:B11 che hanno un valore maggiore di 30 con uno sfondo verde, un carattere nero e uno stile di testo in grassetto:
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 eseguiamo questa macro, riceviamo il seguente output:
Tieni presente che ogni cella nell’intervallo B2:B11 con un valore maggiore di 30 è soggetta alla formattazione condizionale.
Qualsiasi cella con un valore uguale o inferiore a 30 viene semplicemente lasciata intatta.
Esempio 2: applicare la formattazione condizionale in base a più condizioni
Possiamo utilizzare la seguente macro per applicare la formattazione condizionale alle celle nell’intervallo A2:A11 in base al nome della squadra:
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 eseguiamo questa macro, riceviamo il seguente output:
Tieni presente che le celle con i nomi delle squadre “Mavericks”, “Blazers” e “Celtics” sono tutte soggette a una formattazione condizionale specifica.
L’unica squadra con il nome “Lakers” viene lasciata sola poiché non abbiamo specificato alcuna regola di formattazione condizionale per le celle con quel nome di squadra.
Esempio 3: rimuovi tutte le regole di formattazione condizionale dalle celle
Infine, possiamo utilizzare la seguente macro per rimuovere tutte le regole di formattazione condizionale dalle celle del foglio corrente:
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
Tieni presente che tutta la formattazione condizionale è stata rimossa da ciascuna cella.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
VBA: come contare le occorrenze di caratteri in una stringa
VBA: come verificare se una stringa contiene un’altra stringa
VBA: una formula per “Se” la cella contiene”