Muotoilu VBA:lla
Pyyhkäise näyttääksesi valikon
Kaiken, mitä voit muotoilla käsin Excelissä, voit muotoilla myös koodilla.
Fontit
With on lyhennys, jonka avulla voit viitata samaan objektiin useita kertoja peräkkäin ilman, että kirjoitat sen koko nimen jokaiselle riville. With obj ... End With tarkoittaa, että jokainen lohkon sisällä oleva rivi, joka alkaa pisteellä (esim. .Property = X), on lyhennys muodosta obj.Property = X — VBA lisää obj automaattisesti jokaiseen. Tämä on vain luettavuuden helpottamiseksi; se ei muuta koodin toimintaa.
' 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
Molemmat versiot tekevät täsmälleen saman asian — With vain estää toistamasta ws.Range("A1:I1").Font kolme kertaa.
Värit
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Reunaviivat
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Tasaus
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Ehdollisen muotoilun perusteet
VBA voi käyttää samoja sääntöjä, joita loisit valintanauhan kautta:
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)
Suorita tämä, niin jokainen "Cancelled"-tilaus saa automaattisesti punasävyisen korostuksen — ja toisin kuin manuaalisesti lisätty muotoilu, sääntö pysyy voimassa, jos Status-arvo myöhemmin muuttuu.
Tehtävä
- Lihavoi otsikkorivi (
A1:I1), lisää sille tummanvihreä täyttö (RGB(24, 106, 60)) ja valkoinen fontti (RGB(255, 255, 255)) — kaikki koodilla, ei käsin. - Lisää ohuet harmaat (
RGB(200, 200, 200)) reunukset koko taulukon ympärille käyttämälläCurrentRegion-ominaisuutta. - Lisää ehdollinen muotoilu, joka korostaa kaikki tilaukset, joissa
Discount % >= 10, keltaisella (RGB(255, 235, 156)).
1. Otsikkorivin muotoilu
Font.Bold,Interior.ColorjaFont.Colorvoidaan kaikki asettaa samalle alueelle.- Tummanvihreä täyttö vaatii RGB-arvon; valkoinen fontti on yksinkertaisin mahdollinen RGB-arvo.
With...End With-lohko estää toistamastaws.Range("A1:I1")kolme kertaa.
2. Reunusten lisääminen CurrentRegion-ominaisuudella
CurrentRegionsolussa A1 kattaa koko taulukon ilman, että sinun tarvitsee tietää tai kovakoodata rivien määrää.- Reunuksilla on kolme ominaisuutta, jotka tulee asettaa yhdessä:
LineStyle,WeightjaColor— ohut harmaa tarkoittaaxlThinja vaaleanharmaa RGB-arvo.
3. Ehdollinen muotoilu Discount % >= 10
- Tämä on numeerinen vertailu, ei tekstivertailu, joten ehtotyyppi on xlCellValue ja xlGreaterEqual — eri asia kuin luvun aiemmassa esimerkissä käytetty "Cancelled"-teksti.
- Haastava kohta: Discount % tallennetaan desimaalina (10% = 0,1), joten vertailuarvo Formula1:ssa tulee kirjoittaa muodossa "0.1", ei "10".
- Poista aina olemassa olevat ehdolliset muotoilut kyseiseltä alueelta ensin, muuten makron toistuva suoritus lisää päällekkäisiä sääntöjä.
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
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Muotoilu VBA:lla
Kaiken, mitä voit muotoilla käsin Excelissä, voit muotoilla myös koodilla.
Fontit
With on lyhennys, jonka avulla voit viitata samaan objektiin useita kertoja peräkkäin ilman, että kirjoitat sen koko nimen jokaiselle riville. With obj ... End With tarkoittaa, että jokainen lohkon sisällä oleva rivi, joka alkaa pisteellä (esim. .Property = X), on lyhennys muodosta obj.Property = X — VBA lisää obj automaattisesti jokaiseen. Tämä on vain luettavuuden helpottamiseksi; se ei muuta koodin toimintaa.
' 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
Molemmat versiot tekevät täsmälleen saman asian — With vain estää toistamasta ws.Range("A1:I1").Font kolme kertaa.
Värit
ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60) ' dark green header
Reunaviivat
With ws.Range("A1:I6").Borders
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(200, 200, 200)
End With
Tasaus
ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft
Ehdollisen muotoilun perusteet
VBA voi käyttää samoja sääntöjä, joita loisit valintanauhan kautta:
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)
Suorita tämä, niin jokainen "Cancelled"-tilaus saa automaattisesti punasävyisen korostuksen — ja toisin kuin manuaalisesti lisätty muotoilu, sääntö pysyy voimassa, jos Status-arvo myöhemmin muuttuu.
Tehtävä
- Lihavoi otsikkorivi (
A1:I1), lisää sille tummanvihreä täyttö (RGB(24, 106, 60)) ja valkoinen fontti (RGB(255, 255, 255)) — kaikki koodilla, ei käsin. - Lisää ohuet harmaat (
RGB(200, 200, 200)) reunukset koko taulukon ympärille käyttämälläCurrentRegion-ominaisuutta. - Lisää ehdollinen muotoilu, joka korostaa kaikki tilaukset, joissa
Discount % >= 10, keltaisella (RGB(255, 235, 156)).
1. Otsikkorivin muotoilu
Font.Bold,Interior.ColorjaFont.Colorvoidaan kaikki asettaa samalle alueelle.- Tummanvihreä täyttö vaatii RGB-arvon; valkoinen fontti on yksinkertaisin mahdollinen RGB-arvo.
With...End With-lohko estää toistamastaws.Range("A1:I1")kolme kertaa.
2. Reunusten lisääminen CurrentRegion-ominaisuudella
CurrentRegionsolussa A1 kattaa koko taulukon ilman, että sinun tarvitsee tietää tai kovakoodata rivien määrää.- Reunuksilla on kolme ominaisuutta, jotka tulee asettaa yhdessä:
LineStyle,WeightjaColor— ohut harmaa tarkoittaaxlThinja vaaleanharmaa RGB-arvo.
3. Ehdollinen muotoilu Discount % >= 10
- Tämä on numeerinen vertailu, ei tekstivertailu, joten ehtotyyppi on xlCellValue ja xlGreaterEqual — eri asia kuin luvun aiemmassa esimerkissä käytetty "Cancelled"-teksti.
- Haastava kohta: Discount % tallennetaan desimaalina (10% = 0,1), joten vertailuarvo Formula1:ssa tulee kirjoittaa muodossa "0.1", ei "10".
- Poista aina olemassa olevat ehdolliset muotoilut kyseiseltä alueelta ensin, muuten makron toistuva suoritus lisää päällekkäisiä sääntöjä.
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
Kiitos palautteestasi!