Modifica condizionale del carattere e della dimensione del carattere (Microsoft Excel)
Robin chiede se esiste un modo per utilizzare le funzionalità di formattazione condizionale di Excel per modificare il carattere utilizzato in una cella o per modificare la dimensione del carattere in una cella. La risposta breve è no, non si può fare, almeno non con la formattazione condizionale. (I controlli che consentono di specificare il nome e la dimensione del carattere sono disattivati nella finestra di dialogo di formattazione utilizzata con la formattazione condizionale.)
È tuttavia possibile utilizzare una macro per esaminare il contenuto delle celle e apportare modifiche all’aspetto di una cella. Considera la seguente macro, che esamina tutte le celle che hai selezionato quando esegui la macro. Se una qualsiasi delle celle ha una lunghezza di più di due caratteri o un valore di più di 10, il carattere della cella viene modificato.
Sub DoReformat() Dim rCell As Range For Each rCell In Selection.Cells If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next End Sub
Per utilizzare la macro, seleziona le celle che desideri modificare e quindi esegui la macro. Se vuoi che la formattazione cambi in modo più automatico, puoi fare in modo che la macro controlli se è stata apportata una modifica entro un certo intervallo di celle:
Private Sub Worksheet_Calculate() Dim rng As Range Dim rCell As Range Set rng = Range("A1:A10") For Each rCell In rng If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next End Sub
Questa macro, quando viene aggiunta all’oggetto foglio di lavoro, verrà eseguita ogni volta che il foglio di lavoro viene ricalcolato. Controlla il range A1: A10, applicando gli stessi test della macro precedente. Il risultato è che la formattazione delle celle viene controllata e modificata continuamente. Per fare in modo che la macro controlli un intervallo diverso, basta cambiare gli indirizzi assegnati alla variabile rng vicino all’inizio della macro.
Uno svantaggio di questa macro è che può diventare lento se si dispone di un intervallo molto ampio da controllare. Andrà molto rapidamente se controlli A1: A10 (dieci celle), ma potrebbe andare molto più lentamente se controlli continuamente B2: N465 (oltre 6.000 celle). In tal caso, potresti voler progettare la macro in modo che venga eseguita ogni volta che il foglio di lavoro viene modificato, ma interviene solo se la modifica è stata eseguita su una cella nell’intervallo di destinazione. La seguente versione viene aggiunta anche all’oggetto foglio di lavoro:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rCell As Range If Union(Target, Range("A1:A10")).Address = _ Range("A1:A10").Address Then Application.EnableEvents = False For Each rCell In Target If Len(rCell.Text) > 2 Or _ Val(rCell.Value) > 10 Then rCell.Font.Name = "Arial" rCell.Font.Size = 16 Else rCell.Font.Name = "Times New Roman" rCell.Font.Size = 12 End If Next Application.EnableEvents = True End If End Sub
La macro utilizza la funzione Union per verificare se le celle modificate (passate al gestore eventi nella variabile Target) hanno qualche sovrapposizione con l’intervallo che si desidera controllare. Se lo fanno, il controllo viene eseguito sulle celle nell’intervallo Target.
Una cosa da tenere a mente con le macro che influenzano la formattazione è che se hai una formattazione condizionale applicata a una cella controllata anche da una macro, la formattazione nella formattazione condizionale ha la precedenza sulla formattazione nella macro. Se la tua macro sta cambiando il nome e la dimensione del carattere, questo non è un grosso problema perché la formattazione condizionale non influirà su questi attributi. Tuttavia, se modifichi la macro per modificare anche un attributo di formato diverso, ad esempio il colore della cella, e tale attributo viene modificato anche dal formato condizionale, non sembrerà che la macro abbia fatto nulla perché Excel utilizza di preferenza la formattazione condizionale a quello che fa la macro.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2380) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: