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

Forumthread: VBA Rahmenlinie einfügen

VBA Rahmenlinie einfügen
12.03.2017 20:03:23
lena
Hallo zusammen,
ich habe eine Frage.
Ich habe eine Excel Tabelle, in der die Zeilen- und Spaltenanzahl variiert.
Ich möchte nun ein VBA anwenden, welches folgendes ausführt:
In Spalte A soll immer wenn ein Eintrag (Nummer) steht über dieser Nummer die Rahmenlinie (oben) automatisch bis zur letzten Spalte (variabel) eingefügt werden.
In Spalte A ist zudem der Abstand zwischen den eingetragenen Nummern unterschiedlich. Mal 1, mal 2, mal 3, mal 4, mal 5 leere Zellen dazwischen.
Ich habe ein Beispiel Excel angehängt und dort auch schon die gewünschte obere Rahmenlinie eingefügt.
https://www.herber.de/bbs/user/112126.xlsx
Ich hoffe es kann mir jemand helfen diese Formatierung mittels VBA zu automatisieren.
Vielen vielen Dank & ich wünsche einen schönen Abend.
Lena
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Rahmenlinie einfügen
12.03.2017 22:45:34
Henner
Hallo Lena
Das geht wie folgt. Für die letzte benutzte Spalte im benutzten Bereich musst Du eine Function einbauen, die letzte Zeile kannst Du einfach ermitteln. Fertige Datei siehe unten. In der Beispieldatei Makro "Linien" aufrufen.

Function FindLetzte(mySH As Worksheet) As Range
Dim LRow As Long, LCol As Long
Dim A As Long
With mySH.UsedRange
On Error Resume Next
LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious). _
Row)
If LRow = 0 Then LRow = 1
For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
LCol = mySH.Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious). _
Column
LCol = Application.Max(LCol, mySH.Columns(A).Find("*", , xlFormulas, xlWhole,  _
xlByRows, xlPrevious).Column)
If LCol > 1 Then: LCol = A: Exit For
Next A
If LCol = 0 Then LCol = 1
End With
Set FindLetzte = mySH.Cells(LRow, LCol)
End Function
Sub Linien()
Dim intLRow As Integer
Dim intLCol As Integer
intLRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rows.Row
intLCol = FindLetzte(ActiveSheet).Column
For t = intLRow To 2 Step -1
If ActiveSheet.Cells(t, 1).Value  "" Then ActiveSheet.Range(Cells(t, 1), Cells(t, intLCol) _
).Borders(xlEdgeTop).LineStyle = xlContinuous
Next t
End Sub
Download:

Die Datei https://www.herber.de/bbs/user/112131.xlsm wurde aus Datenschutzgründen gelöscht


Funktioniert? Gruss Henner
Anzeige
KORREKTUR: VBA Rahmenlinie einfügen
12.03.2017 22:53:40
Henner
Hallo Lena
Kleine Korrektur: Dimensioniere LRow und LCol als Long - nicht Integer.
Korrigierte Version der Datei: https://www.herber.de/bbs/user/112133.xlsm

Dim lngLRow As Long
Dim lngLCol As Long
Funktioniert? Gruss Henner
Anzeige
AW: KORREKTUR: VBA Rahmenlinie einfügen
13.03.2017 18:37:55
Lena
Hallo Henner,
Vielen vielen Dank funktioniert perfekt. Super.
Danke für deine Hilfe.
Lg & schönen Abend,
Lena
Gerne, danke für die Rückmeldung. (owT)
13.03.2017 19:55:02
Henner
.
AW: VBA Rahmenlinie einfügen
12.03.2017 23:27:12
Luschi
Hallo lena list,
hier mal mein Versuch: https://www.herber.de/bbs/user/112134.xlsm
Starte dazu das Makro 'MachMal'.
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Rahmenlinie in Excel einfügen


Schritt-für-Schritt-Anleitung

Um eine obere Rahmenlinie in einer Excel-Tabelle automatisch einzufügen, wenn in Spalte A ein Wert vorhanden ist, kannst Du folgendes VBA-Skript verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Function FindLetzte(mySH As Worksheet) As Range
    Dim LRow As Long, LCol As Long
    Dim A As Long
    With mySH.UsedRange
        On Error Resume Next
        LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
        LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
        If LRow = 0 Then LRow = 1
        For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
            LCol = mySH.Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious).Column
            LCol = Application.Max(LCol, mySH.Columns(A).Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Column)
            If LCol > 1 Then: LCol = A: Exit For
        Next A
        If LCol = 0 Then LCol = 1
    End With
    Set FindLetzte = mySH.Cells(LRow, LCol)
End Function

Sub Linien()
    Dim intLRow As Long
    Dim intLCol As Long
    intLRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rows.Row
    intLCol = FindLetzte(ActiveSheet).Column
    For t = intLRow To 2 Step -1
        If ActiveSheet.Cells(t, 1).Value <> "" Then ActiveSheet.Range(Cells(t, 1), Cells(t, intLCol)).Borders(xlEdgeTop).LineStyle = xlContinuous
    Next t
End Sub
  1. Schließe den VBA-Editor.
  2. Führe das Makro Linien aus, um die Rahmenlinien in Deiner Tabelle einzufügen.

Häufige Fehler und Lösungen

  • Fehler: "Typ-Fehler" bei der Dimensionierung
    Stelle sicher, dass die Variablen LRow und LCol als Long und nicht als Integer deklariert sind. Dies wurde im Beispielcode angepasst.

  • Fehler: Rahmenlinien werden nicht angezeigt
    Überprüfe, ob die Zellen in Spalte A tatsächlich Werte enthalten. Wenn die entsprechenden Zellen leer sind, wird keine Linie eingefügt.


Alternative Methoden

Falls Du kein VBA verwenden möchtest, kannst Du auch manuell Rahmenlinien in Excel einfügen:

  1. Wähle die Zellen aus, die Du formatieren möchtest.
  2. Gehe auf die Registerkarte Start.
  3. Im Bereich Schriftart klickst Du auf das Symbol für Rahmen und wählst Oben Rahmen.

Diese Methode ist jedoch weniger flexibel, besonders wenn die Anzahl der Zeilen variiert.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele:

  • Beispiel 1: Du hast eine Excel-Tabelle mit Verkaufszahlen, und Du möchtest die obersten Verkaufszahlen hervorheben. Füge einfach die VBA-Funktion ein, um die Linien automatisch hinzuzufügen.

  • Beispiel 2: In einer Liste von Projekten in einer Excel-Tabelle möchtest Du die verschiedenen Phasen mit Linien trennen. Verwende das Skript, um die Übersichtlichkeit zu erhöhen.


Tipps für Profis

  • Nutze Conditional Formatting (Bedingte Formatierung) in Excel, um noch mehr Kontrolle über die Darstellung Deiner Tabellen zu erhalten.
  • Experimentiere mit verschiedenen Linienarten (z. B. gestrichelt oder dick) im VBA-Skript, indem Du die LineStyle-Eigenschaft änderst.
  • Wenn Du regelmäßig VBA-Skripte verwendest, erstelle eine Bibliothek mit häufig genutzten Makros, um Zeit zu sparen.

FAQ: Häufige Fragen

1. Kann ich das Makro anpassen, um andere Arten von Linien einzufügen?
Ja, Du kannst die LineStyle-Eigenschaft im VBA-Skript ändern, um verschiedene Linienstile zu verwenden.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen (z. B. Excel 2010 und später).

3. Wie kann ich sicherstellen, dass die Rahmenlinien immer aktuell sind?
Du kannst das Makro so einstellen, dass es bei jedem Öffnen der Arbeitsmappe oder beim Ändern von Zellen automatisch ausgeführt wird.

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