Formattazione condizionale in Excel VBA
Possiamo applicare la formattazione condizionale a una cella o a un intervallo di celle in Excel. Un formato condizionale è un formato che viene applicato solo a celle che soddisfano determinati criteri, ad esempio valori al di sopra di un determinato valore, valori positivi o negativi o valori con una particolare formula, ecc. Questa formattazione condizionale può essere eseguita anche nella programmazione VBA di Excel utilizzando la " Raccolta delle condizioni di formato " nella macro / procedura.
La condizione di formato viene utilizzata per rappresentare un formato condizionale che può essere impostato chiamando un metodo che restituisce una variabile di quel tipo. Contiene tutti i formati condizionali per un singolo intervallo e può contenere solo tre condizioni di formato.
FormatConditions.Add / Modify / Delete viene utilizzato in VBA per aggiungere / modificare / eliminare oggetti FormatCondition alla raccolta. Ogni formato è rappresentato da un oggetto FormatCondition. FormatConditions è una proprietà dell'oggetto Range e aggiungi i seguenti parametri con la sintassi seguente:
FormatConditions.Add (Tipo, Operatore, Formula1, Formula2)
Gli argomenti della sintassi della formula Aggiungi sono i seguenti:
- Tipo: obbligatorio, rappresenta se il formato condizionale è basato sul valore presente nella cella o in un'espressione.
- Operatore: facoltativo, rappresenta l'operatore da utilizzare con un valore quando "Tipo" è basato sul valore della cella.
- Formula1: facoltativo, rappresenta il valore o l'espressione associata al formato condizionale.
- Formula2: opzionale, rappresenta il valore o l'espressione associata alla seconda parte del formato condizionale quando il parametro: "Operator" è "xlBetween" o "xlNotBetween."
FormatConditions.Modify ha anche la stessa sintassi di FormatConditions.Add.
Di seguito è riportato l'elenco di alcuni valori / enumerazioni che possono essere presi da alcuni parametri di "Aggiungi" / "Modifica":

Esempi di formattazione condizionale VBA
Di seguito sono riportati gli esempi di formattazione condizionale in Excel VBA.
Esempio 1
Supponiamo di avere un file Excel contenente il nome e i voti di alcuni studenti e desideriamo determinare / evidenziare i segni come grassetto e di colore blu, che è maggiore di 80, e come grassetto e rosso a colori, che è inferiore a 50. Vediamo i dati contenuti nel file:

Usiamo FormatConditions.Aggiungi la funzione come di seguito per ottenere ciò:
- Vai a Sviluppatore -> Visual Basic Editor:

- Fare clic con il pulsante destro del mouse sul nome della cartella di lavoro nel riquadro "Progetto-VBAProject "->" Inserisci "->" Modulo ".

- Ora scrivi il codice / procedura in questo modulo:
Codice:
Sub formatting () End Sub

- Definisci la variabile rng, condition1, condition2:
Codice:
Sub formatting () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition End Sub

- Imposta / correggi l'intervallo su cui si desidera la formattazione condizionale utilizzando la funzione 'Intervallo' VBA:
Codice:
Sub formatting () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") End Sub

- Elimina / cancella qualsiasi formattazione condizionale esistente (se presente) dall'intervallo, utilizzando "FormatConditions.Delete":
Codice:
Sub formatting () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete End Sub

- Ora definisci e imposta i criteri per ogni formato condizionale, utilizzando 'FormatConditions.Add':
Codice:
Sub formatting () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete Imposta condizione1 = rng.FormatConditions.Add (xlCellValue, xlGorgeous, "= 80 ") Imposta condizione2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") End Sub

- Definisci e imposta il formato da applicare per ciascuna condizione

Copia e incolla questo codice nel tuo modulo di classe VBA.
Codice:
Sub formatting() 'Definining the variables: Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition 'Fixing/Setting the range on which conditional formatting is to be desired Set rng = Range("B2", "B11") 'To delete/clear any existing conditional formatting from the range rng.FormatConditions.Delete 'Defining and setting the criteria for each conditional format Set condition1 = rng.FormatConditions.Add(xlCellValue, xlGreater, "=80") Set condition2 = rng.FormatConditions.Add(xlCellValue, xlLess, "=50") 'Defining and setting the format to be applied for each condition With condition1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font.Bold = True End With End Sub
Ora, quando eseguiamo questo codice utilizzando il tasto F5 o manualmente, vediamo che i segni inferiori a 50 vengono evidenziati in grassetto e rosso, mentre quelli maggiori di 80 vengono evidenziati in grassetto e blu come segue:

Esempio n. 2
Diciamo che nell'esempio sopra abbiamo anche un'altra colonna che afferma che lo studente è un "Topper" se ottiene più di 80 punti, altrimenti passa / fallisce scritto contro di loro. Ora desideriamo evidenziare i valori indicati come "Topper" in grassetto e blu. Vediamo i dati contenuti nel file:

In questo caso, il codice / procedura funzionerebbe come segue:
Codice:
Sub TextFormatting () End Sub

Definisci e imposta il formato da applicare per ciascuna condizione
Codice:
Sub TextFormatting () With Range ("c2: c11"). FormatConditions.Add (xlTextString, TextOperator: = xlContains, String: = "topper") With .Font .Bold = True .Color = vbBlue End With End With End Sub

Possiamo vedere nel codice precedente che desideriamo verificare se l'intervallo: "C2: C11" contiene la stringa: "Topper", quindi il parametro: "Onamestor" di "Format.Add" accetta l'enumerazione: "Xcontains" a testare questa condizione nell'intervallo fisso (ad esempio, C2: C11), quindi eseguire la formattazione condizionale richiesta (modifiche dei caratteri) su questo intervallo.
Ora, quando eseguiamo questo codice manualmente o premendo il tasto F5, vediamo che i valori delle celle con "Topper" vengono evidenziati in blu e in grassetto:

Below are some other instances/criteria that can be used to test and thus apply VBA conditional formatting on:
- Format by Time Period
- Average condition
- Colour Scale condition
- IconSet condition
- Databar condition
- Unique Values
- Duplicate Values
- Top10 values
- Percentile Condition
- Blanks Condition, etc.
With different conditions to be tested, different values/enumeration are taken by parameters of ‘Add.’
Things to Remember About VBA Conditional Formatting
- ‘Add’ method with ‘FormatConditions’ is used to create a new conditional format, ’Delete’ method to delete any conditional format, and ‘Modify’ method to alter any existing conditional format.
- The ‘Add’ method with ‘FormatConditions Collection’ fails if more than three conditional formats are created for a single range.
- Per applicare più di tre formati condizionali a un intervallo utilizzando il metodo "Aggiungi", possiamo utilizzare "Se" o "Seleziona maiuscole e minuscole".
- Se il metodo "Aggiungi" ha il parametro "Tipo" come: "xlExpression", il parametro "Operatore" viene ignorato.
- I parametri: "Formula1" e "Formula2" nel metodo "Aggiungi" possono essere un riferimento di cella, un valore costante, un valore stringa o anche una formula.
- Il parametro: "Formula2" viene utilizzato solo quando il parametro: "Operator" è "xlBetween" o "xlNotBetween", altrimenti viene ignorato.
- Per rimuovere tutta la formattazione condizionale da qualsiasi foglio di lavoro, possiamo utilizzare il metodo "Elimina" come segue:
Cells.FormatConditions.Delete