Formattazione con VBA
Scorri per mostrare il menu
Tutto ciò che puoi formattare manualmente in Excel, puoi formattarlo tramite codice.
Caratteri
With è una scorciatoia per riferirsi allo stesso oggetto più volte di seguito senza dover riscrivere il suo nome completo su ogni riga. With obj ... End With significa semplicemente che ogni riga all'interno di quel blocco che inizia con un punto (come .Property = X) è una scorciatoia per obj.Property = X — VBA inserisce automaticamente obj per ciascuna di esse. È solo una comodità per la leggibilità; non cambia il funzionamento del codice.
' Without With — obj repeated on every line
ws.Range("A1:I1").Font.Bold = True
ws.Range("A1:I1").Font.Size = 11
ws.Range("A1:I1").Font.Color = RGB(255, 255, 255)
' With With — the object is stated once, everything else is shorthand
With ws.Range("A1:I1").Font
.Bold = True
.Size = 11
.Color = RGB(255, 255, 255)
.Name = "Calibri"
End With
Entrambe le versioni fanno esattamente la stessa cosa — With serve solo a evitare di ripetere ws.Range("A1:I1").Font tre volte.
Colori
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Bordi
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Allineamento
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Basi della formattazione condizionale
VBA può applicare le stesse regole che si impostano tramite la barra multifunzione:
Dim rng As Range
Set rng = ws.Range("I2:I6") ' Status column
rng.FormatConditions.Delete ' clear any existing rules first
rng.FormatConditions.Add Type:=xlTextString, String:="Cancelled", _
TextOperator:=xlContains
rng.FormatConditions(1).Interior.Color = RGB(255, 199, 206)
rng.FormatConditions(1).Font.Color = RGB(156, 0, 6)
Esegui questo codice e ogni ordine "Cancelled" verrà evidenziato automaticamente con una tonalità rossa — e, a differenza della formattazione manuale, la regola rimane attiva anche se il valore Status cambia successivamente.
Attività
- Grassetto per la riga di intestazione (
A1:I1), riempimento verde scuro (RGB(24, 106, 60)) e carattere bianco (RGB(255, 255, 255)) — tutto tramite codice, non manualmente. - Aggiunta di bordi sottili grigi (
RGB(200, 200, 200)) attorno all'intera tabella utilizzandoCurrentRegion. - Aggiunta di una formattazione condizionale che evidenzia in giallo (
Discount % >= 10) ogni ordine conRGB(255, 235, 156).
1. Formattazione della riga di intestazione
Font.Bold,Interior.ColoreFont.Colorpossono essere impostati sulla stessa area.- Il riempimento verde scuro richiede una terna RGB; il carattere bianco è il valore RGB più semplice.
- Un blocco
With...End Withevita di ripeterews.Range("A1:I1")tre volte.
2. Aggiunta di bordi con CurrentRegion
CurrentRegionsu A1 seleziona l'intera tabella senza dover conoscere o impostare manualmente il numero di righe.- I bordi hanno tre proprietà da impostare insieme:
LineStyle,WeighteColor— grigio sottile significaxlThine un valore RGB grigio chiaro.
3. Formattazione condizionale per Discount % >= 10
- Si tratta di un confronto numerico, non testuale, quindi il tipo di condizione è xlCellValue con xlGreaterEqual — diverso dall'esempio di testo “Cancelled” visto in precedenza nel capitolo.
- La parte delicata: Discount % è memorizzato come decimale (10% = 0.1), quindi il valore di confronto in Formula1 deve essere scritto come "0.1", non "10".
- È sempre necessario cancellare le formattazioni condizionali esistenti su quell'intervallo, altrimenti esecuzioni ripetute della macro sovrapporranno regole duplicate.
Sub FormatOrdersTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
' --- 1. Header row formatting ---
With ws.Range("A1:I1")
.Font.Bold = True
.Interior.Color = RGB(24, 106, 60)
.Font.Color = RGB(255, 255, 255)
End With
' --- 2. Borders around the full table ---
With ws.Range("A1").CurrentRegion.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
' --- 3. Conditional format for Discount % >= 10 ---
Dim discountRange As Range
Set discountRange = ws.Range("G2:G6")
discountRange.FormatConditions.Delete
discountRange.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreaterEqual, Formula1:="0.1"
discountRange.FormatConditions(1).Interior.Color = RGB(255, 235, 156)
End Sub
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Formattazione con VBA
Tutto ciò che puoi formattare manualmente in Excel, puoi formattarlo tramite codice.
Caratteri
With è una scorciatoia per riferirsi allo stesso oggetto più volte di seguito senza dover riscrivere il suo nome completo su ogni riga. With obj ... End With significa semplicemente che ogni riga all'interno di quel blocco che inizia con un punto (come .Property = X) è una scorciatoia per obj.Property = X — VBA inserisce automaticamente obj per ciascuna di esse. È solo una comodità per la leggibilità; non cambia il funzionamento del codice.
' Without With — obj repeated on every line
ws.Range("A1:I1").Font.Bold = True
ws.Range("A1:I1").Font.Size = 11
ws.Range("A1:I1").Font.Color = RGB(255, 255, 255)
' With With — the object is stated once, everything else is shorthand
With ws.Range("A1:I1").Font
.Bold = True
.Size = 11
.Color = RGB(255, 255, 255)
.Name = "Calibri"
End With
Entrambe le versioni fanno esattamente la stessa cosa — With serve solo a evitare di ripetere ws.Range("A1:I1").Font tre volte.
Colori
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Bordi
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Allineamento
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Basi della formattazione condizionale
VBA può applicare le stesse regole che si impostano tramite la barra multifunzione:
Dim rng As Range
Set rng = ws.Range("I2:I6") ' Status column
rng.FormatConditions.Delete ' clear any existing rules first
rng.FormatConditions.Add Type:=xlTextString, String:="Cancelled", _
TextOperator:=xlContains
rng.FormatConditions(1).Interior.Color = RGB(255, 199, 206)
rng.FormatConditions(1).Font.Color = RGB(156, 0, 6)
Esegui questo codice e ogni ordine "Cancelled" verrà evidenziato automaticamente con una tonalità rossa — e, a differenza della formattazione manuale, la regola rimane attiva anche se il valore Status cambia successivamente.
Attività
- Grassetto per la riga di intestazione (
A1:I1), riempimento verde scuro (RGB(24, 106, 60)) e carattere bianco (RGB(255, 255, 255)) — tutto tramite codice, non manualmente. - Aggiunta di bordi sottili grigi (
RGB(200, 200, 200)) attorno all'intera tabella utilizzandoCurrentRegion. - Aggiunta di una formattazione condizionale che evidenzia in giallo (
Discount % >= 10) ogni ordine conRGB(255, 235, 156).
1. Formattazione della riga di intestazione
Font.Bold,Interior.ColoreFont.Colorpossono essere impostati sulla stessa area.- Il riempimento verde scuro richiede una terna RGB; il carattere bianco è il valore RGB più semplice.
- Un blocco
With...End Withevita di ripeterews.Range("A1:I1")tre volte.
2. Aggiunta di bordi con CurrentRegion
CurrentRegionsu A1 seleziona l'intera tabella senza dover conoscere o impostare manualmente il numero di righe.- I bordi hanno tre proprietà da impostare insieme:
LineStyle,WeighteColor— grigio sottile significaxlThine un valore RGB grigio chiaro.
3. Formattazione condizionale per Discount % >= 10
- Si tratta di un confronto numerico, non testuale, quindi il tipo di condizione è xlCellValue con xlGreaterEqual — diverso dall'esempio di testo “Cancelled” visto in precedenza nel capitolo.
- La parte delicata: Discount % è memorizzato come decimale (10% = 0.1), quindi il valore di confronto in Formula1 deve essere scritto come "0.1", non "10".
- È sempre necessario cancellare le formattazioni condizionali esistenti su quell'intervallo, altrimenti esecuzioni ripetute della macro sovrapporranno regole duplicate.
Sub FormatOrdersTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
' --- 1. Header row formatting ---
With ws.Range("A1:I1")
.Font.Bold = True
.Interior.Color = RGB(24, 106, 60)
.Font.Color = RGB(255, 255, 255)
End With
' --- 2. Borders around the full table ---
With ws.Range("A1").CurrentRegion.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
' --- 3. Conditional format for Discount % >= 10 ---
Dim discountRange As Range
Set discountRange = ws.Range("G2:G6")
discountRange.FormatConditions.Delete
discountRange.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreaterEqual, Formula1:="0.1"
discountRange.FormatConditions(1).Interior.Color = RGB(255, 235, 156)
End Sub
Grazie per i tuoi commenti!