Formatering med VBA
Stryg for at vise menuen
Alt, hvad du kan formatere manuelt i Excel, kan du også formatere via kode.
Skrifttyper
With er en genvej til at referere til det samme objekt flere gange i træk uden at skulle skrive dets fulde navn på hver linje. With obj ... End With betyder blot, at hver linje inden for blokken, der starter med et punktum (som .Property = X), er en forkortelse for obj.Property = X — VBA indsætter automatisk obj for hver linje. Det er udelukkende for at gøre koden mere læsbar; det ændrer ikke, hvad 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
Begge versioner gør præcis det samme — With undgår blot gentagelse af ws.Range("A1:I1").Font tre gange.
Farver
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æggende betinget formatering
VBA kan anvende de samme regler, som du ville oprette via båndet:
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 dette, og hver "Cancelled" ordre får automatisk en rødtonet fremhævning — og i modsætning til manuel formatering forbliver reglen aktiv, hvis Status-værdien senere ændres.
Opgave
- Gør overskriftsrækken (
A1:I1) fed, giv den en mørkegrøn fyldfarve (RGB(24, 106, 60)), og gør skrifttypen hvid (RGB(255, 255, 255)) — alt sammen i kode, ikke manuelt. - Tilføj tynde grå (
RGB(200, 200, 200)) kanter omkring hele tabellen ved hjælp afCurrentRegion. - Tilføj en betinget formatering, der fremhæver enhver ordre med
Discount % >= 10i gul (RGB(255, 235, 156)).
1. Formatering af overskriftsrækken
Font.Bold,Interior.ColorogFont.Colorkan alle indstilles på det samme område.- Mørkegrøn fyldfarve kræver et RGB-triplet; hvid skrift er den simpleste RGB-værdi.
- En
With...End With-blok undgår gentagelse afws.Range("A1:I1")tre gange.
2. Tilføjelse af kanter med CurrentRegion
CurrentRegionpå A1 fanger hele tabellen uden at du behøver at vide eller hårdkode, hvor mange rækker der findes.- Kanter har tre egenskaber, der skal indstilles sammen:
LineStyle,WeightogColor— tynd grå betyderxlThinog en lys grå RGB-værdi.
3. Betinget formatering for Discount % >= 10
- Dette er en numerisk sammenligning, ikke en tekstbaseret, så betingelsestypen er xlCellValue med xlGreaterEqual — forskelligt fra eksemplet med “Cancelled” tekst tidligere i kapitlet.
- Det vanskelige: Discount % gemmes som et decimaltal (10% = 0,1), så sammenligningsværdien i Formula1 skal skrives som "0.1", ikke "10".
- Ryd altid eksisterende betingede formater på det område først, ellers vil gentagne kørsel af din makro stable dublerede regler oven på hinanden.
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
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Formatering med VBA
Alt, hvad du kan formatere manuelt i Excel, kan du også formatere via kode.
Skrifttyper
With er en genvej til at referere til det samme objekt flere gange i træk uden at skulle skrive dets fulde navn på hver linje. With obj ... End With betyder blot, at hver linje inden for blokken, der starter med et punktum (som .Property = X), er en forkortelse for obj.Property = X — VBA indsætter automatisk obj for hver linje. Det er udelukkende for at gøre koden mere læsbar; det ændrer ikke, hvad 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
Begge versioner gør præcis det samme — With undgår blot gentagelse af ws.Range("A1:I1").Font tre gange.
Farver
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æggende betinget formatering
VBA kan anvende de samme regler, som du ville oprette via båndet:
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 dette, og hver "Cancelled" ordre får automatisk en rødtonet fremhævning — og i modsætning til manuel formatering forbliver reglen aktiv, hvis Status-værdien senere ændres.
Opgave
- Gør overskriftsrækken (
A1:I1) fed, giv den en mørkegrøn fyldfarve (RGB(24, 106, 60)), og gør skrifttypen hvid (RGB(255, 255, 255)) — alt sammen i kode, ikke manuelt. - Tilføj tynde grå (
RGB(200, 200, 200)) kanter omkring hele tabellen ved hjælp afCurrentRegion. - Tilføj en betinget formatering, der fremhæver enhver ordre med
Discount % >= 10i gul (RGB(255, 235, 156)).
1. Formatering af overskriftsrækken
Font.Bold,Interior.ColorogFont.Colorkan alle indstilles på det samme område.- Mørkegrøn fyldfarve kræver et RGB-triplet; hvid skrift er den simpleste RGB-værdi.
- En
With...End With-blok undgår gentagelse afws.Range("A1:I1")tre gange.
2. Tilføjelse af kanter med CurrentRegion
CurrentRegionpå A1 fanger hele tabellen uden at du behøver at vide eller hårdkode, hvor mange rækker der findes.- Kanter har tre egenskaber, der skal indstilles sammen:
LineStyle,WeightogColor— tynd grå betyderxlThinog en lys grå RGB-værdi.
3. Betinget formatering for Discount % >= 10
- Dette er en numerisk sammenligning, ikke en tekstbaseret, så betingelsestypen er xlCellValue med xlGreaterEqual — forskelligt fra eksemplet med “Cancelled” tekst tidligere i kapitlet.
- Det vanskelige: Discount % gemmes som et decimaltal (10% = 0,1), så sammenligningsværdien i Formula1 skal skrives som "0.1", ikke "10".
- Ryd altid eksisterende betingede formater på det område først, ellers vil gentagne kørsel af din makro stable dublerede regler oven på hinanden.
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
Tak for dine kommentarer!