Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rahmen (Linestyle Laufzeitfehler) wenn nur 1 Linie

Forumthread: Rahmen (Linestyle Laufzeitfehler) wenn nur 1 Linie

Rahmen (Linestyle Laufzeitfehler) wenn nur 1 Linie
Tanja
Guten Tag zusammen
Ich habe ein Problem mit einem Rahmen.
Und zwar erscheint immer die Fehlermeldung "Die LineStyle-Eigenschaft des Border-Objektes kann nicht festgelegt werden". Wenn ich debugge wird die hier unten fett dargestellte Stelle markiert. Der Fehler liegt also bei den horizontalen Linien.
Diese Meldung erscheint nur wenn die Tabelle nur EINE Zeile besitzt. Sobald es 2 und mehr Zeilen sind funktioniert es tadellos.
Kann mir jemand einen Tipp geben wie ich das abfangen kann?
Hier noch der Code.
Dim lz%
lz = Cells(13, 1).End(xlDown).Row
With ThisWorkbook.Sheets(Sheet_Daten).Range(Cells(14, 1), Cells(lz, 8))
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeLeft).ColorIndex = xlAutomatic
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeTop).ColorIndex = xlAutomatic
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeBottom).ColorIndex = xlAutomatic
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeRight).ColorIndex = xlAutomatic
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideVertical).ColorIndex = xlAutomatic
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlThin
.Borders(xlInsideHorizontal).ColorIndex = xlAutomatic

End with
Vielen Dank
Liebe Grüsse Tanja

Anzeige
AW: Rahmen (Linestyle Laufzeitfehler) wenn nur 1 Linie
31.08.2012 09:34:19
Rudi
Hallo,
da die Rahmen alle gleich sind einfach so:
With ThisWorkbook.Sheets(1).Range(Cells(14, 1), Cells(lz, 8))
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Borders.ColorIndex = xlAutomatic
End With

Gruß
Rudi

AW: Rahmen (Linestyle Laufzeitfehler) wenn nur 1 Linie
31.08.2012 09:48:03
Tanja
Vielen Dank Rudi!
Ich habe wieder viel zu weit überlegt. :-(
Eine Antwort ist wiedermal superschnell und funktioniert einwandfrei
Liebe Grüsse
Tanja

Anzeige
Dazu gibt's aber noch einiges zu bemerken, ...
31.08.2012 15:09:57
Luc:-?
…Tanja (& Rudi);
1. Der Fehler trat deshalb auf, weil du versucht hast, innere Rahmenlinien festzulegen. Dafür muss die betreffende Zelle aber immer eine Vorgängerzelle in der jeweiligen Richtung haben, sonst kann das nicht fktn.
2. Die Verwendung der xlEdge~-Konstanten (7…10) ist trügerisch, denn bei ihnen handelt es sich nicht um Elementindizes des Borders-Auflistungs- des Range-Objekts, sondern um die Indizes für die real sichtbaren Rahmen, weshalb sie wohl auch nicht mit 1 beginnen, sondern mit 7. Die 6 Elemente des Borders-Auflistungsobjekts wdn von 1…6 durchnummeriert, wobei 5 u.6 mit den Enumerationskonstanten xlDiagonalDown u.xlDiagonalUp identisch sind, die übrigens im Ggsatz zu den unter 1. erwähnten Konstt 11/12 stets nur gleich formatiert wdn können, wenn beide Diagonalen verwendet wdn.
3. Die Enumeration der 6 Auflistungselemente folgt der Rhf links-rechts-oben-unten-fallend-steigend, die der 8 sichtbaren Rahmen der Rhf fallend-steigend-links-oben-unten-rechts-vertikal-horizontal, wobei die Diagonalen zusammenfallen.
4. Für das FormatCondition-Objekt gelten die xlEdge~-Konstanten nicht, aber die Auflistungsindizes 1…4 können mit gleicher Bedeutung verwendet wdn. Außerdem kann man hierfür auch die negativen Konstt xlLeft, xlTop, xlBottom, xlRight verwenden, die aber wiederum nicht für das Range-Objekt gelten!
5. Die Indizes 1…4 können sich von den Indizes 7…10 unterscheiden, wenn zwischen Zeilen u/o Spalten jeweils nur 1 Rahmenlinie gezogen wurde. Darauf reagiert Xl auch bei Seitenumbrüchen innerhalb einer Tabelle. Es fehlt dann auf der 1.Seite die Abschlusslinie oder auf der 2. die Anfangslinie. Wenn man so etwas steuern resp beachten will, muss man (bei zellweisem Vorgehen) mit den Auflistungsindizes 1…4 arbeiten! Für ganze Bereiche kann für das Range-Objekt auch 7…10 verwendet wdn, falls auch die Indizes 11+12 benutzt wdn. Sollen alle Zellen eines Bereichs rundum gerahmt wdn, geht man so vor wie es Rudi hier vorschlägt. Dadurch wdn stets alle senkrechten und waagerechten Rahmen (1…4) des Borders-Auflistungsobjekts gesetzt.
Übrigens, für HTML gelten wieder etwas andere Regeln und Reihenfolgen… ;-)
Gruß Luc :-?

Anzeige
AW: Dazu gibt's aber noch einiges zu bemerken, ...
31.08.2012 15:34:02
Tanja
Hallo Luc
Vielen Dank für die zusätzlichen Informationen.
Jetzt weiss ich wieder ein wenig mehr über Rhamen. Hoffe ich kriege das das nächste mal so hin, wenn ich mal spezielle Rahmen erstellen möchte :-)
Für mein jetziges Problem ist die Lösung von Rudi aber völlig ausreichend.
Thänx :-)
Liebe Grüsse
Tanja

Anzeige
Sagte ich ja... Bittää säähr! ;-) owT
31.08.2012 15:41:42
Luc:-?
:-?

...Die du übrigens auch der VBE-Hilfe entnehmen...
01.09.2012 16:00:40
Luc:-?
…kannst, Tanja;
das, was ich geschrieben habe, aber nur zT! ;->
SchöWE, Luc :-?
;
Anzeige
Anzeige

Infobox / Tutorial

Rahmen in Excel: Laufzeitfehler mit Linestyle beheben


Schritt-für-Schritt-Anleitung

  1. Fehler erkennen: Wenn du beim Festlegen des LineStyle für einen Rahmen den Laufzeitfehler "Die LineStyle-Eigenschaft des Border-Objektes kann nicht festgelegt werden" erhältst, liegt dies oft daran, dass du versuchst, innere Linien (xlInsideHorizontal oder xlInsideVertical) für einen Bereich mit nur einer Zeile oder Spalte festzulegen.

  2. Code anpassen: Um diesen Fehler zu vermeiden, solltest du sicherstellen, dass der Bereich, auf den du die Rahmen anwendest, mindestens zwei Zeilen oder zwei Spalten umfasst.

  3. Beispielcode:

    Dim lz%
    lz = Cells(13, 1).End(xlDown).Row
    If lz > 14 Then  ' Überprüfen, ob mehr als eine Zeile vorhanden ist
       With ThisWorkbook.Sheets("Sheet_Daten").Range(Cells(14, 1), Cells(lz, 8))
           .Borders(xlEdgeLeft).LineStyle = xlContinuous
           .Borders(xlEdgeLeft).Weight = xlThin
           .Borders(xlEdgeLeft).ColorIndex = xlAutomatic
           .Borders(xlEdgeTop).LineStyle = xlContinuous
           .Borders(xlEdgeTop).Weight = xlThin
           .Borders(xlEdgeTop).ColorIndex = xlAutomatic
           .Borders(xlEdgeBottom).LineStyle = xlContinuous
           .Borders(xlEdgeBottom).Weight = xlThin
           .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
           .Borders(xlEdgeRight).LineStyle = xlContinuous
           .Borders(xlEdgeRight).Weight = xlThin
           .Borders(xlEdgeRight).ColorIndex = xlAutomatic
           If lz > 14 Then
               .Borders(xlInsideVertical).LineStyle = xlContinuous
               .Borders(xlInsideVertical).Weight = xlThin
               .Borders(xlInsideVertical).ColorIndex = xlAutomatic
               .Borders(xlInsideHorizontal).LineStyle = xlContinuous
               .Borders(xlInsideHorizontal).Weight = xlThin
               .Borders(xlInsideHorizontal).ColorIndex = xlAutomatic
           End If
       End With
    End If

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler beim Festlegen des LineStyle.

    • Lösung: Stelle sicher, dass der Bereich mindestens zwei Zeilen hat, bevor du innere Rahmenlinien festlegst.
  • Fehler: Unsichtbare Rahmenlinien.

    • Lösung: Überprüfe die Weight- und ColorIndex-Einstellungen, um sicherzustellen, dass die Linien sichtbar sind.

Alternative Methoden

  • Verwende eine vereinfachte Syntax für Rahmen, um Fehler zu vermeiden. Zum Beispiel:
    With ThisWorkbook.Sheets(1).Range(Cells(14, 1), Cells(lz, 8))
      .Borders.LineStyle = xlContinuous
      .Borders.Weight = xlThin
      .Borders.ColorIndex = xlAutomatic
    End With

    Diese Methode gewährleistet, dass alle Rahmenlinien einheitlich gesetzt werden.


Praktische Beispiele

  • Beispiel 1: Rahmen für einen Bereich mit einer Zeile:

    With ThisWorkbook.Sheets("Sheet_Daten").Range("A1:H1")
      .Borders(xlEdgeTop).LineStyle = xlContinuous
      .Borders(xlEdgeBottom).LineStyle = xlContinuous
    End With
  • Beispiel 2: Rahmen für einen Bereich mit mehreren Zeilen:

    With ThisWorkbook.Sheets("Sheet_Daten").Range("A1:H10")
      .Borders.LineStyle = xlContinuous
    End With

Tipps für Profis

  • Nutze die xlThin- und xlContinuous-Konstanten, um ein einheitliches Erscheinungsbild der Rahmen zu gewährleisten.
  • Achte darauf, dass du die richtigen Indizes verwendest, insbesondere wenn du mit xlEdge-Konstanten arbeitest, um Verwirrung zu vermeiden.

FAQ: Häufige Fragen

1. Warum tritt der Laufzeitfehler auf? Der Fehler tritt auf, wenn du versuchst, innere Rahmenlinien für einen Bereich ohne entsprechende Zellen festzulegen.

2. Wie kann ich sicherstellen, dass alle Rahmen korrekt gesetzt werden? Überprüfe, dass der ausgewählte Bereich die erforderliche Anzahl an Zeilen und Spalten hat, bevor du die Rahmenlinien anwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige