Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
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
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige