Kurz gesagt — Ein Rahmen ist eine Eigenschaft einer Kante, nicht einer Zelle. Ein Bereich hat acht adressierbare Rahmen: die vier Außenkanten (
xlEdgeLeft,xlEdgeRight,xlEdgeTop,xlEdgeBottom), die zwei inneren Gitternetz-Sätze (xlInsideVertical,xlInsideHorizontal) und zwei Diagonalen. Die bloßeRange("A1:D10").Borders-Auflistung meint alle davon, sodass.Borders.LineStyle = xlContinuousjede Zelle im Block einrahmt, nicht nur die Kontur. Nehmen SieRange("A1:D10").BorderAround LineStyle:=xlContinuous, Weight:=xlThin, wenn Sie nur den äußeren Rahmen wollen.
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Report")
' Den Block umranden, dann eine duenne Linie unter der Kopfzeile - zwei verschiedene Aufgaben.
ws.Range("A1:D10").BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
ws.Range("A1:D1").Borders(xlEdgeBottom).LineStyle = xlContinuous
Rahmen hinzuzufügen ist eines der ersten Dinge, die Leute automatisieren, und es ist zugleich der
Ort, an dem ein kleines Missverständnis das rätselhafteste Ergebnis im ganzen
Formatierungs-Werkzeugkasten erzeugt: Sie baten um „einen Rahmen“, und Excel zeichnete ein Gitter um
jede Zelle. Diese Anleitung ruht auf einer Idee, die den Rest vorhersagbar macht: Borders ist eine
Auflistung von Kanten, und die Auflistung anzufassen fasst jede Kante an. Sobald Sie Rahmen als
kanten-weise sehen, verschwindet die Verwirrung zwischen Kontur und Gitter.
Was Sie lernen
- Das mentale Modell — ein Rahmen gehört zu einer Kante, und
Bordersist die ganze Menge davon - Die wichtigste Regel —
.Bordersrahmt jede Zelle ein,.BorderAroundzeichnet nur den Rahmen - Die drei Eigenschaften, die eine Linie sichtbar machen —
LineStyle,WeightundColor - Eine Kante nach der anderen ansprechen mit
xlEdgeBottom,xlInsideVerticalund dem Rest - Rahmen sauber löschen mit
xlLineStyleNone - Warum Rahmen Dekoration sind, keine Struktur — und wonach Sie stattdessen greifen
Das mentale Modell: ein Rahmen ist eine Eigenschaft einer Kante
Dies ist das Geschwister des Aussehen-Clusters — Font gestaltet den Text,
Interior füllt dahinter, und Rahmen zeichnen die Linien darum. Aber
Rahmen unterscheiden sich davon in einem wichtigen Punkt: Eine Zelle hat nicht „einen Rahmen“, sie
hat bis zu acht davon, und VBA erreicht jeden über die Borders-Auflistung, indiziert durch eine
XlBordersIndex-Konstante:
' Die acht adressierbaren Kanten eines beliebigen Bereichs:
' xlEdgeLeft, xlEdgeRight, xlEdgeTop, xlEdgeBottom - die vier Aussenseiten
' xlInsideVertical, xlInsideHorizontal - Gitternetzlinien ZWISCHEN Zellen
' xlDiagonalDown, xlDiagonalUp - Ecke zu Ecke
ws.Range("B2").Borders(xlEdgeBottom).LineStyle = xlContinuous ' nur die Unterkante von B2
Halten Sie dieses Bild fest — acht Kanten, jede unabhängig adressierbar — und jede spätere Regel folgt
daraus. Die inneren Rahmen existieren nur, wenn der Bereich mehr als eine Zelle umfasst (eine einzelne
Zelle hat kein „Dazwischen“), was genau der Grund ist, warum dieselbe Codezeile sich auf B2 anders
verhält als auf B2:E20.
Die wichtigste Regel: .Borders ist jede Kante, .BorderAround ist nur der Rahmen
Hier ist die eine Zeile, die jeden erwischt. Auf einem mehrzelligen Bereich wirkt das Setzen der Auflistung auf alle Kanten zugleich — Außenseiten und die Gitternetzlinien zwischen den Zellen:
' Rahmt JEDE Zelle im Block ein - Kontur plus alle inneren Gitternetzlinien.
ws.Range("A1:D10").Borders.LineStyle = xlContinuous
Das ist selten, was Leute meinen, wenn sie sagen „setz einen Rahmen darum“. Wenn Sie ein einzelnes
Rechteck um den ganzen Block und nichts darin wollen, nehmen Sie die BorderAround-Methode, die
immer nur die vier Außenkanten anfasst:
' Nur der aeussere Rahmen - keine inneren Linien.
ws.Range("A1:D10").BorderAround LineStyle:=xlContinuous, Weight:=xlThick
Die Unterscheidung ist der Kern des Themas: .Borders = das Gitter, .BorderAround = die Kontur.
Wenn Sie wirklich beides wollen — einen eingerahmten Block mit leichteren inneren Linien —, machen Sie
es in zwei Durchgängen: Setzen Sie .Borders.LineStyle für das Innere, dann BorderAround für einen
kräftigeren Rahmen obendrauf. Zu .Borders zu greifen, wo Sie .BorderAround meinten, ist der
häufigste Grund, warum ein „einzelner Rahmen“ als ganzer Käfig herauskommt.
Die drei Eigenschaften, die eine Linie machen: LineStyle, Weight, Color
Eine Rahmenkante ist unsichtbar, bis sie einen LineStyle hat. Das ist die Eigenschaft, die eine
Linie einschaltet; die anderen zwei verfeinern sie. Weil Sie meist alle drei zusammen setzen, hält
With es lesbar:
With ws.Range("A1:D10").Borders(xlEdgeBottom)
.LineStyle = xlContinuous ' schaltet die Linie EIN - ohne dies zeigt sich nichts
.Weight = xlMedium ' xlHairline, xlThin, xlMedium, xlThick
.Color = RGB(0, 32, 96) ' 24-Bit-RGB, wie Font.Color
End With
Drei Dinge, die zu wissen sich lohnt. LineStyle ist der Ein/Aus-Schalter — xlContinuous, xlDash,
xlDot, xlDashDot, xlDouble, xlSlantDashDot und so weiter — und es zu setzen ist es, was den
Rahmen erscheinen lässt. Weight ist eine von vier Konstanten (xlHairline, xlThin, xlMedium,
xlThick), keine Punktzahl. Und nicht jedes LineStyle/Weight-Paar ist zulässig: xlHairline
bedeutet eine durchgezogene dünne Linie, und xlDouble ignoriert Weight völlig — wenn also eine
Stärke keine Wirkung zu haben scheint, überschreibt der Linienstil sie. Für die Farbe nehmen Sie
.Color = RGB(r, g, b) (derselbe 24-Bit-Raum wie Font.Color, behandelt in
VBA Font); meiden Sie .ColorIndex, außer Sie gleichen eine alte Palette ab.
Eine Kante nach der anderen
Die meisten echten Rahmen sind nicht „alles oder nichts“. Eine Linie unter einer Kopfzeile, ein Trenner zwischen zwei Abschnitten, ein dicker linker Rand — jeder ist eine einzelne Kante:
' Eine kraeftige Linie unter der Kopfzeile, ein leichter Trenner zwischen Spalte B und C.
ws.Range("A1:D1").Borders(xlEdgeBottom).Weight = xlThick
ws.Range("A1:D1").Borders(xlEdgeBottom).LineStyle = xlContinuous
ws.Range("C2:C20").Borders(xlEdgeLeft).LineStyle = xlDot
xlInsideVertical und xlInsideHorizontal geben Ihnen die Gitternetzlinien zwischen den Zellen
ohne den äußeren Rahmen — das Gegenstück zu BorderAround. Sprechen Sie die Kanten an, die Sie
wollen, und lassen Sie den Rest unberührt; jedes Borders(index) ist unabhängig, sodass das Setzen
der Unterkante die Oberkante nie stört.
Rahmen löschen
Um Rahmen zu entfernen, setzen Sie den Linienstil auf keinen. Auf der Auflistung löscht es alles; auf einem Index löscht es nur diese Kante:
ws.Range("A1:D10").Borders.LineStyle = xlLineStyleNone ' alle Rahmen im Block entfernen
ws.Range("A1:D1").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone ' nur die Linie unter der Kopfzeile entfernen
xlLineStyleNone und xlNone sind hier austauschbar. Beachten Sie, dass das Löschen der Rahmen eines
Bereichs die Rahmen nicht anfasst, die Excel als Teil eines Tabellen-Stils oder einer bedingten
Formatierung zeichnet — die gehören dem Objekt, das sie erzeugt hat, nicht der Zelle. Wenn also eine
Linie sich weigert zu verschwinden, suchen Sie nach einer Tabelle oder einer Formatregel statt nach
einem verirrten Borders-Aufruf.
Rahmen sind Dekoration, keine Struktur
Klar gesagt, weil es Nacharbeit erspart: Ein Rahmen ist rein visuell. Er gruppiert keine Zeilen,
definiert keinen Bereich und ist für jede Formel unsichtbar. Wenn Sie Rahmen zeichnen, damit ein Block
wie eine Tabelle aussieht, um später darauf zu verweisen, wandeln Sie ihn stattdessen in eine echte
Excel-Tabelle (ListObject) um — Sie bekommen den eingerahmten Look und einen benannten Bereich,
strukturierte Verweise und automatische Streifen. Nutzen Sie handgezeichnete Rahmen für den letzten
Schliff an einem Bericht, den Sie gleich drucken oder exportieren, nicht als Weg, Daten eine Form zu
geben, die Ihr Code lesen kann. Die Form muss in den Daten leben, so wie in
VBA Range; der Rahmen ist nur die Farbe obendrauf.
Wie ExcelMaster hilft
Rahmen verbergen mehr Entscheidungen, als es aussieht: Auflistung gegenüber BorderAround, welche von
acht Kanten Sie tatsächlich meinten, ein Weight, das ein LineStyle still überschreibt, und eine
Linie, die sich nicht löschen lässt, weil eine Tabelle sie besitzt. Jede falsche Abzweigung ist leise
— ein Gitter, wo Sie eine Kontur wollten, oder gar keine Änderung.
ExcelMaster lässt Sie stattdessen
das Ergebnis beschreiben. Sagen Sie „rahme den Summenblock mit einer dicken Kontur und einer dünnen
Linie unter der Kopfzeile ein“, und es nutzt BorderAround für den Rahmen und Borders(xlEdgeBottom)
für die Linie — setzt zuerst LineStyle, damit die Linie auch erscheint, und wählt Weight und
Color passend. Sie behalten die Arbeitsmappe und den Code; Sie sparen sich den Durchgang, in dem
.Borders jede Zelle einsperrte, die Sie nur umranden wollten.
Häufig gestellte Fragen
Wie füge ich in Excel VBA einen Rahmen zu einem Bereich hinzu?
Für eine einzelne Kontur um den ganzen Bereich nehmen Sie Range("A1:D10").BorderAround LineStyle:=xlContinuous, Weight:=xlThin — sie zeichnet nur den äußeren Rahmen. Für eine bestimmte
Kante setzen Sie es auf dem Auflistungs-Index, zum Beispiel Range("A1:D1").Borders(xlEdgeBottom).LineStyle = xlContinuous. Setzen Sie immer LineStyle (nicht nur Weight), denn der Linienstil ist es, der
einen Rahmen sichtbar macht.
Warum rahmt Range.Borders.LineStyle jede Zelle ein, statt eine Kontur zu zeichnen?
Weil Range.Borders die ganze Auflistung der Kanten ist — die vier Außenseiten und die inneren
Gitternetzlinien zwischen den Zellen. LineStyle auf der Auflistung zu setzen wirkt auf alle davon,
ein mehrzelliger Bereich bekommt also um jede Zelle einen Rahmen. Nehmen Sie BorderAround, um nur
den äußeren Rahmen anzufassen, oder sprechen Sie einzelne Kanten wie Borders(xlEdgeTop) an, eine
Seite nach der anderen.
Was ist der Unterschied zwischen Borders und BorderAround in VBA?
Borders(index) ist eine Auflistung, die Sie nach Kante indizieren (xlEdgeLeft, xlInsideVertical
und so weiter), und die bloße Auflistung zu setzen betrifft jede Kante. BorderAround ist eine
Methode, die in einem Aufruf nur die vier Außenkanten des Bereichs zeichnet und die inneren
Gitternetzlinien in Ruhe lässt. Nehmen Sie BorderAround für eine Kontur und die Borders-Auflistung,
wenn Sie innere Linien oder eine einzelne Kante brauchen.
Wie entferne ich Rahmen von einem Bereich in VBA?
Setzen Sie den Linienstil auf keinen: Range("A1:D10").Borders.LineStyle = xlLineStyleNone löscht
jeden Rahmen im Block, und Range("A1:D1").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone löscht
nur eine Kante. Weigert sich ein Rahmen zu verschwinden, wird er wahrscheinlich von einem
Excel-Tabellen-Stil oder einer Regel der bedingten Formatierung gezeichnet, die ihre eigenen Rahmen
besitzen.
Welche LineStyle- und Weight-Werte kann ich für VBA-Rahmen nutzen?
LineStyle akzeptiert xlContinuous, xlDash, xlDot, xlDashDot, xlDashDotDot, xlDouble,
xlSlantDashDot und xlLineStyleNone. Weight ist eine von vier Konstanten — xlHairline,
xlThin, xlMedium, xlThick — keine Punktgröße. Manche Kombinationen sind eingeschränkt:
xlDouble ignoriert Weight, wenn also eine Stärke keine Wirkung zu haben scheint, ist der
Linienstil der Grund.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 14.08.2026.
Verwandte Anleitungen: VBA Merge Cells · VBA Zellfarbe · VBA Font · VBA With · VBA Range
