Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Formatierung mit Vba | Arbeiten mit Excel-Daten
Excel VBA für Geschäftsautomatisierung

Formatierung mit Vba

Swipe um das Menü anzuzeigen

Alles, was Sie in Excel manuell formatieren können, lässt sich auch per Code formatieren.

Schriftarten

With ist eine Kurzschreibweise, um sich mehrmals hintereinander auf dasselbe Objekt zu beziehen, ohne dessen vollständigen Namen in jeder Zeile erneut eingeben zu müssen. With obj ... End With bedeutet einfach, dass jede Zeile innerhalb dieses Blocks, die mit einem Punkt beginnt (wie .Property = X), eine Kurzform für obj.Property = X ist — VBA fügt obj automatisch für jede Zeile ein. Dies dient ausschließlich der besseren Lesbarkeit und ändert nichts an der Funktionsweise des Codes.

' 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

Beide Varianten bewirken exakt dasselbe — With verhindert lediglich die dreifache Wiederholung von ws.Range("A1:I1").Font.

Farben

ws.Range("A1:I1").Interior.Color = RGB(24, 106, 60)   ' dark green header

Rahmen

With ws.Range("A1:I6").Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
    .Color = RGB(200, 200, 200)
End With

Ausrichtung

ws.Range("E2:E6").HorizontalAlignment = xlCenter
ws.Range("C2:C6").HorizontalAlignment = xlLeft

Grundlagen der bedingten Formatierung

VBA kann die gleichen Regeln anwenden, die über das Menüband erstellt werden:

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)
Abbildung 3.4

Führen Sie dieses Makro aus und jede "Cancelled"-Bestellung wird automatisch mit einer roten Hervorhebung versehen – und im Gegensatz zur manuellen Formatierung bleibt die Regel aktiv, falls sich der Status später ändert.

Aufgabe

  1. Kopfzeile (A1:I1) fett formatieren, mit dunkelgrünem Hintergrund (RGB(24, 106, 60)) und weißer Schriftfarbe (RGB(255, 255, 255)) – alles per Code, nicht manuell.
  2. Dünne graue (RGB(200, 200, 200)) Rahmen um die gesamte Tabelle mit CurrentRegion hinzufügen.
  3. Bedingte Formatierung hinzufügen, die jede Bestellung mit Discount % >= 10 gelb hervorhebt (RGB(255, 235, 156)).
Hinweis
expand arrow

1. Formatierung der Kopfzeile

  • Font.Bold, Interior.Color und Font.Color können alle auf denselben Bereich angewendet werden.
  • Dunkelgrüner Hintergrund benötigt ein RGB-Tripel; weiße Schrift ist der einfachste RGB-Wert.
  • Ein With...End With-Block verhindert, dass ws.Range("A1:I1") dreimal wiederholt werden muss.

2. Rahmen mit CurrentRegion hinzufügen

  • CurrentRegion auf A1 erfasst die gesamte Tabelle, ohne dass Sie wissen oder festlegen müssen, wie viele Zeilen vorhanden sind.
  • Rahmen haben drei Eigenschaften, die zusammen gesetzt werden: LineStyle, Weight und Color – dünnes Grau bedeutet xlThin und einen hellgrauen RGB-Wert.

3. Bedingte Formatierung für Discount % >= 10

  • Dies ist ein numerischer Vergleich, kein Textvergleich, daher ist der Bedingungstyp xlCellValue mit xlGreaterEqual – anders als beim "Cancelled"-Textbeispiel zuvor im Kapitel.
  • Die Herausforderung: Discount % wird als Dezimalzahl gespeichert (10% = 0,1), daher muss der Vergleichswert in Formula1 als "0.1" und nicht als "10" geschrieben werden.
  • Immer zuerst bestehende bedingte Formatierungen in diesem Bereich löschen, sonst werden bei wiederholtem Ausführen des Makros doppelte Regeln übereinander gelegt.
Lösung
expand arrow
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
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 4
some-alt