Formatering med VBA
Svep för att visa menyn
Allt du kan formatera manuellt i Excel kan du också formatera med kod.
Typsnitt
With är en förkortning för att referera till samma objekt flera gånger i rad utan att behöva skriva ut hela namnet på varje rad. With obj ... End With betyder helt enkelt att varje rad inom blocket som börjar med en punkt (som .Property = X) är en förkortning för obj.Property = X — VBA fyller automatiskt i obj för varje sådan rad. Det är endast en bekvämlighet för läsbarheten; det ändrar inte vad koden gör.
' 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
Båda versionerna gör exakt samma sak — With undviker bara att upprepa ws.Range("A1:I1").Font tre gånger.
Färger
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Kanter
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Justering
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Grundläggande villkorsstyrd formatering
VBA kan tillämpa samma regler som du skapar via menyfliksområdet:
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)
Kör detta så får varje "Cancelled"-order automatiskt en rödtonad markering — och till skillnad från manuell formatering förblir regeln aktiv om värdet i Status ändras senare.
Uppgift
- Gör rubrikraden (
A1:I1) fet, ge den en mörkgrön fyllning (RGB(24, 106, 60)) och gör teckensnittet vitt (RGB(255, 255, 255)) — allt i kod, inte manuellt. - Lägg till tunna grå (
RGB(200, 200, 200)) ramar runt hela tabellen med hjälp avCurrentRegion. - Lägg till en villkorsstyrd formatering som markerar alla ordrar med
Discount % >= 10i gult (RGB(255, 235, 156)).
1. Formatera rubrikraden
Font.Bold,Interior.ColorochFont.Colorkan alla ställas in på samma område.- Mörkgrön fyllning kräver en RGB-trippel; vitt teckensnitt är det enklaste RGB-värdet som finns.
- Ett
With...End With-block undviker att behöva upprepaws.Range("A1:I1")tre gånger.
2. Lägga till ramar med CurrentRegion
CurrentRegionpå A1 fångar hela tabellen utan att du behöver veta eller hårdkoda hur många rader som finns.- Ramar har tre egenskaper som ska ställas in tillsammans:
LineStyle,WeightochColor— tunn grå innebärxlThinoch ett ljust grått RGB-värde.
3. Villkorsstyrd formatering för Discount % >= 10
- Detta är en numerisk jämförelse, inte en textjämförelse, så villkorstypen är xlCellValue med xlGreaterEqual — annorlunda än "Cancelled"-exemplet tidigare i kapitlet.
- Det kluriga: Discount % lagras som ett decimaltal (10% = 0,1), så jämförelsevärdet i Formula1 måste skrivas som "0.1", inte "10".
- Rensa alltid befintliga villkorsstyrda formateringar på det området först, annars staplas dubbletter vid upprepade körningar av makrot.
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
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal