Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen der Automatischen Zeilenumbrüche finden

Zeilen der Automatischen Zeilenumbrüche finden
Martin
Hallo liebe Excelfreunde,
ich beschäftige mich seit einer Weile mit einem Problem, das ich aber nicht wunschgemäß gelöst bekomme: Ich möchte gerne die Zeilen aller Seitenumbrüche (sind alle horizontal) ermitteln. Ich habe zwei Ansätze, die beide nicht wie gewünscht klappen:
Beim folgenden Code werden zwar alle Seitenumbrüche ordnungsgemäß gefunden, allerdings benötigt das Makro dafür eine halbe Ewigkeit:
Sub Zeilenumbrüche1()
Dim i As Long
For i = 5 To ActiveSheet.UsedRange.Rows.Count
If ActiveSheet.Rows(i).PageBreak = xlPageBreakAutomatic Then
Cells(i, 1).Select
MsgBox "Zeilenumbruch in Zeile " & i
End If
Next
End Sub
... auch "Application.Calculation = xlCalculationAutomatic" bringt da keine Verbesserung.
Der nächste Code würde zwar wesentlich schneller funktionieren, stoppt aber mit der Fehlermeldung "Laufzeitfehler '9': Index außerhalb des gültigen Bereichs":
Sub Zeilenumbrüche2()
Dim HBreaks As Long, i As Long
HBreaks = ActiveSheet.HPageBreaks.Count
For i = 1 To HBreaks
Cells(i, 1).Select
MsgBox "Zeilenumbruch in Zeile " & ActiveSheet.HPageBreaks(i).Location.Row
Next i
End Sub
Falls der Grund meines Makros von Bedeutung sein sollte: Ich möchte gerne die Zeilenumbrüche ermitteln, damit ich die Zellen der unterste Zeile eines jeden Blattes per VBA automatisch mit einer Rahmenlinie formatieren kann. Da es die Wiederholungszeilen leider nur für oben gibt, versuche ich es per Makro.
Über Vorschläge würde ich mich sehr freuen.
Viele Grüße
Martin
Anzeige
AW: Zeilen der Automatischen Zeilenumbrüche finden
16.09.2010 19:14:06
Oberschlumpf
Hi Martin
Versuch mal so (ungetestet)
Sub Zeilenumbrüche2()
For i = 1 To ActiveSheet.HPageBreaks.Count - 1
MsgBox "Zeilenumbruch in Zeile " & ActiveSheet.HPageBreaks(i).Location.Row
Next i
End Sub

Wenn es jetzt funktioniert, dann liegt der Nr. 9 Fehler an deinem Schleifenendwert For i = 1 To HBreaks
An HBreaks wird zwar der korrekte Wert - nämlich Anzahl Zeilenumbrüche - übergeben.
Aber wenn man selbige zählen will, muss man bei 0 beginnen, nicht bei 1.
Wenn also z Bsp ActiveSheet.HPageBreaks.Count = 3 ist, dann lauten die Indexe der Zeilenumbrüche so:
Zeilenumbruch 1 = Index 0
Zeilenumbruch 2 = Index 1
Zeilenumbruch 3 = Index 2
Und deswegen lautet die richtige Schleife
For UmbruchIndex = 0 To Anzahl.Umbrüche - 1
Hoffe du hast es verstanden (wenn ich denn Recht habe).
Hilfts?
Ciao
Thorsten
Anzeige
AW: Zeilen der Automatischen Seitenumbrüche finden
16.09.2010 19:31:59
Martin
Hallo Thorsten,
vielen Dank für deine Antwort, jetzt funktioniert es auf einmal. Allerdings muss das "- 1" doch weg, denn sonst wird der letzte Zeilenumbruch nicht geliefert. Interessanter Weise geht jetzt auf einmal auch mein zweites oben genanntes Makro, obwohl ich keine Änderungen vorgenommen habe. Ich verstehe es ehrlich gesagt nicht. Ich danke dir für deine Unterstützung.
Viele Grüße
Martin
Anzeige
Frage geschlossen, sorry - war als offen markiert
16.09.2010 19:33:23
Martin
o.T.
Leider ist das Problem doch noch da...
16.09.2010 19:57:10
Martin
Hallo,
leider gibt es das Problem doch noch. Ich habe die Datei jetzt einfach mal hochgeladen:
https://www.herber.de/bbs/user/71575.xls
Ich verstehe leider die Welt nicht mehr. Ich bin ja mal gespannt, ob die Datei bei Euch funktioniert.
Viele Grüße
Martin
Anzeige
AW: Leider ist das Problem doch noch da...
16.09.2010 20:55:03
Oberschlumpf
Hi Martin
hier, das müsste dich weiterbringen:
Sub Seitenumbruch()
Dim varPB As Variant
Dim iPage As Integer, iRowL As Integer
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
iPage = 1
Do While IsError(varPB) = False
varPB = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64)," & iPage & ")")
If IsError(varPB) Then
Exit Sub
Else
Cells(varPB - 1, 1).Select
MsgBox "Zeilenumbruch in Zeile " & varPB
With Range(Cells(varPB - 1, 1), Cells(varPB - 1, 25)).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlHairline
End With
End If
iPage = iPage + 1
Loop
End Sub
entnommen und für dich angepasst aus diesem Beitrag:
https://www.herber.de/mailing/053799h.htm
Hilfts?
Ciao
Thorsten
Anzeige
Okay, das funktioniert! Aber zurvor muss...
16.09.2010 22:12:29
Martin
Hallo Thorsten,
vielen lieben Dank für deine Hilfe. Erst wurden die Seitenumbrüche bei mir falsch erkannt. Mir ist aber aufgefallen, dass nach Ansicht der Seitenansicht auf einmal alle Seitenumbrüche richtig erkannt werden. Jetzt scheint es aber prinzipiell nun zu funktionieren (...nach der Seitenansicht). Also nochmals vielen Dank für deine Bemühungen!
Viele Grüße
Martin
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zeilen der Automatischen Zeilenumbrüche finden


Schritt-für-Schritt-Anleitung

Um die Zeilen der automatischen Seitenumbrüche in Excel zu finden, kannst du die folgenden Schritte ausführen:

  1. Öffne Excel und lade das entsprechende Arbeitsblatt.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > "Einfügen" > "Modul").

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub Seitenumbruch()
       Dim varPB As Variant
       Dim iPage As Integer
       iPage = 1
       Do While IsError(varPB) = False
           varPB = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64)," & iPage & ")")
           If IsError(varPB) Then
               Exit Sub
           Else
               MsgBox "Zeilenumbruch in Zeile " & varPB
               With Range(Cells(varPB - 1, 1), Cells(varPB - 1, 25)).Borders(xlEdgeBottom)
                   .LineStyle = xlContinuous
                   .Weight = xlHairline
               End With
           End If
           iPage = iPage + 1
       Loop
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro über ALT + F8 aus und wähle „Seitenumbruch“ aus der Liste.

Mit diesem Makro werden alle Zeilenumbrüche in deinem Arbeitsblatt gefunden und die unterste Zeile mit einer Rahmenlinie formatiert.


Häufige Fehler und Lösungen

  1. Laufzeitfehler '9': Index außerhalb des gültigen Bereichs

    • Stelle sicher, dass du die Schleife korrekt von 0 bis zur Anzahl der Zeilenumbrüche - 1 durchläufst. Ändere den Schleifenwert wie folgt:

      For i = 0 To ActiveSheet.HPageBreaks.Count - 1
  2. Makro benötigt sehr lange zur Ausführung

    • Reduziere die Anzahl der Zellen, die das Makro durchlaufen muss, oder überprüfe, ob du die Berechnung auf „Manuell“ stellen kannst:

      Application.Calculation = xlCalculationManual

Alternative Methoden

Falls VBA nicht die gewünschte Lösung bietet, kannst du die Seitenumbrüche auch manuell überprüfen:

  1. Wechsle zur Seitenlayout-Ansicht in Excel.
  2. Überprüfe, wo die Seitenumbrüche angezeigt werden.
  3. Nutze die Druckvorschau, um die Seitenumbrüche zu sehen.

Für eine einfache visuelle Identifikation der Seitenumbrüche ist diese Methode effektiv.


Praktische Beispiele

Hier sind einige nützliche Beispiele zur Nutzung des VBA-Codes:

  • Beispiel 1: Formatierung aller Zeilenumbrüche mit verschiedenen Rahmenlinien:

    With Range(Cells(varPB - 1, 1), Cells(varPB - 1, 25)).Borders(xlEdgeBottom)
       .LineStyle = xlContinuous
       .Weight = xlMedium
    End With
  • Beispiel 2: Ausgabe der Zeilenumbrüche in einer separaten Liste in einem neuen Arbeitsblatt:

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Name = "Umbrüche"
    Dim rowNum As Integer
    rowNum = 1
    MsgBox "Zeilenumbruch in Zeile " & varPB
    ws.Cells(rowNum, 1).Value = "Zeilenumbruch in Zeile " & varPB

Tipps für Profis

  • Nutze die F8-Taste, um das Makro Schritt für Schritt zu durchlaufen und die Ausführung zu beobachten.
  • Achte darauf, den Code regelmäßig zu speichern, um Datenverlust zu vermeiden.
  • Experimentiere mit verschiedenen Layouts und Druckoptionen, um die Zeilenumbrüche optimal zu nutzen.

FAQ: Häufige Fragen

1. Frage
Was sind automatische Seitenumbrüche in Excel?
Automatische Seitenumbrüche sind Linien, die Excel einfügt, um zu bestimmen, wo eine Seite beim Drucken endet. Sie helfen, den Druckbereich zu organisieren.

2. Frage
Wie kann ich Seitenumbrüche in Excel manuell hinzufügen?
Du kannst Seitenumbrüche manuell hinzufügen, indem du mit der rechten Maustaste auf eine Zeile klickst und „Seitenumbruch einfügen“ wählst.

3. Frage
Funktioniert dieser Code in allen Excel-Versionen?
Der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, insbesondere ab Excel 2010. Achte darauf, dass Makros in den Excel-Einstellungen aktiviert sind.

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