Dipingiamo un quadro di Monalisa e lasciamoci alle spalle Picasso usando VBA. Pronto, preparati…
Aspettare! Aspettare! Tieni i tuoi cavalli. Useremo solo VBA per fare la formattazione condizionale ed è più facile di un dipinto che? a forma di uccello.
La sintassi generica della formattazione condizionale VBA
Se condizione di Range(range).Interior.ColorIndex= 1-56
Dai il tuo controllo della condizione alla condizione e poi formatta il tuo intervallo usando la proprietà .iteriour.colorindex dell'oggetto Range. L'indice di colore ha 56 colori. Vai a giocare a Holi con loro ed esplora quale numero contiene quale colore.
Ora capiamolo con un esempio
Esempio: codice VBA per formattare le celle in modo condizionale
Quindi, questo è lo scenario, abbiamo un elenco di persone casuali con la loro età e fascia di età.
Quanto sarebbe facile se potessi dire alla fascia d'età di una persona semplicemente guardando i loro nomi.
Ora per fare questo, voglio il formato VBA Nome ROSSO se è un adulto, GIALLO se è un adolescente e VERDE se è un BAMBINO e niente se la cella è vuota.
Sub FormatUsingVBA() Dim rng As Range Dim lastRow As Long lastRow = Cells(Rows.Count, 3).End(xlUp).Row Set rng = Range("C2:C" & lastRow)Per ogni cella In rng If cell. Value2 = "Adulto" Allora Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Then Range(cell.Address).Offset(0, -2). Interior.ColorIndex = 4 ElseIf cell.Value2 = "Adolescente" Then Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 6 Else Range(cell.Address).Offset(0, -2). Interior.ColorIndex = 0 End If Next cell End Sub
Per eseguire questo codice direttamente dal foglio, ho disegnato un pulsante sullo stesso foglio e gli ho assegnato questa macro. Ora, ogni volta che fai clic sul pulsante "Formato", il tuo codice verrà eseguito e aggiornerà le celle del nome con il colore a seconda della fascia di età. Come? Scopriamolo.
Spiegazione del codice:
Dim rng As RangeDim lastRow As LongQueste due righe sono dichiarazioni di variabili. rng per Range che contiene il gruppo di età e lastRow per ottenere l'ultimo numero di riga non vuoto.
lastRow = Cells(Rows.Count, 3).End(xlUp).RowQuesta riga restituisce il numero dell'ultima riga nella variabile lastRow.
Set rng = Range("C2:C" & lastRow)Questa riga imposta l'intervallo a partire da C2 e fino all'ultima riga. Rende il tuo codice dinamico. Aggiungi nuove righe ai tuoi dati e rileverà e memorizzerà in un nuovo intervallo nella variabile rng.
Per ogni cella In rng If cell.Value2 = "Adult" Then Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Then Range(cell.Address). Offset(0, -2).Interior.ColorIndex = 4 ElseIf cell.Value2 = "Teenager" Then Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 6 Else Range(cell.Address). Offset(0, -2).Interior.ColorIndex = 0 End If Next cell
Questo è il segmento principale.
Per ogni cella In rng
La prima riga esegue il ciclo su tutte le celle del tuo intervallo. Se cell.Value2 = "Adulto" Allora
La riga successiva è un controllo delle condizioni. Controlla se il valore della cella corrente è Adulto o meno.
Se sì, viene eseguita la riga successiva, altrimenti passa alla successiva istruzione if.Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 3
Ora, se la condizione SE restituisce VERO, questa riga imposta il colore della cella su ColorIndex 3 che è per ROSSO.
Allo stesso modo, le seguenti istruzioni IF vengono eseguite e agiscono come specificato.
Quindi sì, puoi formattare gli intervalli in modo condizionale usando VBA. Il metodo interno dell'oggetto Range controlla molte altre proprietà per la formattazione. Dovresti giocare con loro, non farà alcun male ma imparerai sicuramente. E se affronti qualche difficoltà rispetto al motivo per cui sono qui. Poni le tue domande nella sezione commenti.
Download file
Formattazione condizionale utilizzando VBA in Microsoft ExcelArticoli popolari:
50 scorciatoie di Excel per aumentare la produttività
Come utilizzare la funzione CERCA.VERT in Excel
Come utilizzare la funzione CONTA.SE in Excel
Come utilizzare la funzione SOMMA.SE in Excel