Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bereiche definieren für Seitenumbruch

Bereiche definieren für Seitenumbruch
13.02.2007 11:14:12
Uwe
Hallo,
ich habe eine Tabelle, die vom Umfang her variiert. Die Tabelle besteht aus mehreren Bereichen. Die Bereiche können ebenfalls unterschiedlich groß sein. Die einzige Begrenzung sind die Spalten, d.h. ich habe eine Begrenzung nach rechts, aber nicht nach unten.
Nun möchte ich aber nicht, das ein Tabellenbereich beim Drucken getrennt wird. Wenn der Bereich nicht mehr komplett auf die Seite passt, soll dieser automatisch auf der nächsten Seite angezeigt werden. Ein Bereich hat immer die Größe, dass sie auch auf eine Seite passen würde.
Vielleicht hilft es weiter, dass jeder Bereich z.B. max 20 Zeilen umfasst und dass die Zeilen, die nicht benötigt werden ausgeblendet sind, so dass es gewissermaßen schon vordefinierte Bereiche gibt (z.B. Zeile 22-42,43-62,63-82, usw.)
Außerdem soll bis Zeile 22 (wobei auch hier nicht immer alles angezeigt wird) die Überschriften auf jeder Seite angezeigt werden. Dies habe ich in der Seitenansicht bereits über Ansicht/Kopf-und Fußzeile/Tabelle/Wiederholungszeile oben Bereich $1:$22 umgesetzt.
Ich habe zum besseren Verständnis ein link heruntergeladen.
https://www.herber.de/bbs/user/40382.xls
Ich hoffe, Ihr könnt mir einen guten Tipp geben. Bisher habe ich es sehr umständlich gelöst, in dem ich für jede Zelle, die belegt ist eine 1 vergeben, die max. Zeilenbegrenzung inkl. variierendem Kopfteil vorgegeben habe, um so letztendlich einen Seitenwechsel anzustoßen. Vor lauter Bäumen sehe ich aber so langsam keine Bäume mehr. Aus diesem Grund hoffe ich, dass es eine ganz einfache Lösung gibt (wie z.B. in Word, wo eine Tabellenabschnitt, der über eine Seite hinausgehen würde, automatisch getrennt und auf der nächste Seite angezeigt wird.
Gruß
Uwe

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereiche definieren für Seitenumbruch
14.02.2007 08:15:06
egres
Hallo Uwe
wenn ich richtig verstanden habe kannst du das mit festen Seitenumbrüchen erreichen.
Schau mal die Tabelle in der Ansicht/Seitenumbruchvorschau an: https://www.herber.de/bbs/user/40416.xls
Gruss
Egres
AW: Bereiche definieren für Seitenumbruch
14.02.2007 08:43:49
Uwe
Hallo Egres,
wenn ich nach jedem Bereich einen Seitenumbruch einfüge, ist auch nur immer ein Bereich auf einer Seite zu sehen. Umfasst jedoch ein Bereich z.B. nur 3 Zeilen, dann passen andere Bereiche auch noch auf die Seite. Ich möchte die Seite optimal ausnutzen, ohne jedoch einen Bereich zu trennen.
Wenn man in Excel die Tabellenabschnitte nicht einstellen kann wie in Word, dann ist es ggf. über ein Makro möglich.
Da jeder Bereich über 20 Zeilen geht (jedoch nicht alle Zeilen eingeblendet sein müssen), könnte evtl. eine Prüfung erfolgen.
z.B. Prüfe, ob Zeilen 20 bis 39 auf einer Seite sind, wenn ja, dann prüfe, ob die Zeilen bis 59, 79, etc. (immer + 20) auf einer Seite sind. Wenn nicht, dann führe einen Seitenwechsel nach dem entsprechenden Abschnitt ein und führe die Prüfung fort.
Die Prüfung der Zeilen könnte begrenzt werden, in dem der zu prüfende Bereich definiert wird. Z.B. prüfe nur den Bereich, bei dem in Spalte A ein Wert steht. Im meinem Beispiel wurde die Prüfung nur bis Zeile 199 bzw. 203 gehen und nicht bis 65536.
In Makro schreiben bin ich leider nicht besonders fit, daher weiss ich nicht, ob man es überhaupt umsetzen kann. Ich kann es auf jeden Fall nicht.
Ich hoffe, dass du mir weiterhelfen kannst oder vielleicht einen ganz anderen Lösungsvorschlag hast.
Gruß
Uwe
Anzeige
Bereiche definieren für Seitenumbruch
14.02.2007 09:02:08
Egres
Hallo Uwe
So wie du es siehst ist für mich im Moment auch zu hoch, da muss ich passen!
Viel Glück!
(PS: sollte jemand dir helfen können, würde mich die Lösung auch interessieren!)
Gruss
E
AW: Bereiche definieren für Seitenumbruch
19.02.2007 20:34:52
Uwe
Hallo Andre,
ich habe unter Recherche ein wenig herumgestöbert. Es gibt ja eine Menge Beiträge dazu. Es gibt auch mehrere, die ein ähnliches Problem wie ich haben. Es gibt m.E. nur keine Lösung.
Ich habe feste Bereiche (Z.B. Zeile 23 bis 42, 43 bis 62, 63 bis 82, etc, d.h. eine Bereich ist immer 20 Zeilen lang, wobei der jeweilige sichtbare Bereich unterschiedlich groß sein kann, weil ausgeblendet.
Das bedeutet, dass wenn ein Seitenumbruch erstellt werden soll, dieser nur nach Zeile 42, 62, 82, etc eingeführt werden darf. Es sollen jedoch so viele Bereiche wie möglich auf eine Seite passen (optimale Seitenausnuzung), so dass ich nicht nach jedem Bereich einen Seitenumbuch setzen möchte.
Es muss also geprüft werden, ob Zeile 23 bis 42 auf eine Seite passt, wenn ja, dann soll geprüft werden, ob der andere Bereich (43 +20) auf die Seite passt, wenn nicht, dass setze einen Seitenumbuch nach 42 und führe Prüfung ab 2. Seite mit Bereich 43 bis 62, 63 bis 82, etc. fort. Führe die Prüfung solange fort bis entweder (hier könnte es u.U. 2. Möglichkeiten geben) Zeile 1500 (max. definierter Bereich) erreicht ist oder ein Druckbereich vorgegeben wird (Makro, dass die Spalte B z.B. nach einem wert durchsucht. Ist kein Wert mehr enthalten, soll hier der Druckbereich fixiert werden).
Wenn das alles in einem Makro umgesetzt werden kann, müsste es theoretisch funktionieren (sagt der Laie).
Ich denke, dass ich hierzu noch keine Lösung in der Recherhche ausfindig machen konnte, lasse mich aber gerne eines besseren belehren.
Gruß
Uwe
Anzeige
AW: Bereiche definieren für Seitenumbruch
19.02.2007 21:21:28
schauan
Hallo Uwe,
und wie merkt man, dass ein Bereich zu Ende ist? Kommt da eine Leerzeile und dann der nächste Absatz? Und was passiert, wenn zum Beispiel die Zeile 42 ausgeblendet ist?
Eventuell kannst Du Deine Daten auch auf einem Blatt halten und den Ausdruck auf einem zweiten wo Du die Daten per Formel einfügst mit Hilfe der Bedingung, die eine Bereichsende definiert...
Ansonsten und rein informativ zum Thema - leider nicht die Lösung ...:
https://www.herber.de/forum/archiv/12to16/t12093.htm
oder hier:
http://www.office-loesung.de/ftopic83973_0_0_asc.php
oder hier:
https://www.herber.de/forum/archiv/504to508/t504946.htm
Irgendwo müsste ich auch noch ein Beispiel haben, da muss ich mal mein Archiv durchforsten ...
Anzeige
AW: Bereiche definieren für Seitenumbruch
20.02.2007 08:44:54
Uwe
Hallo Andre,
damit du einen kleinen Einblick von dem erhältst, was ich gerne hätte, habe ich ein Teil meines Tool heruntergeladen.
https://www.herber.de/bbs/user/40556.zip
In diesem Tool habe ich das Problem bereits umgesetzt, jedoch sehr unübersichtlich und umständlich, aber es funktioniert.
Auf dem ausgeblendeten Tabellnblatt werden Kennzahlen errechnet, die den Seitenumbruch erstellen. Es war jedoch ein sehr großer manueller Aufwand und will man den Bereich über 1500 Zeilen ausdehnen, muss ich das Tabellenblatt bzw. die makros anpassen.
Wenn du eine debuggenmeldung erhältst, gehe auf das Kennzahlenblatt und lösche die Daten in Spalte BO (#Bezug). Da ich nur einen Teil meiner Datei ausgelagert habe, habe ich nicht alle Makros angepasst (bitte um Verständnis).
Ich hoffe, dass mein Problem etwas klarer wird.
Gruß
Uwe
Anzeige
AW: Bereiche definieren für Seitenumbruch
20.02.2007 20:22:54
schauan
Hallo Uwe,
einige Sachen in Deinem code gehen deutlich einzukürzen. Hier mal ein Beispiel, dadurch entfallen die ganzen Pfad-Variablen. Mehr dann morgen.

Sub Ansicht_Sicherheiten()
Application.ScreenUpdating = False
Tabelle27.Unprotect
Sicherheitenobligo1.Unprotect
Tabelle27.Visible = True
Tabelle27.Select
Range("AM294").Select
ActiveCell.FormulaR1C1 = "=IF(Sicherheitenobligo!RC[-38]=1,1,0)"
Range("AM294").Select
Selection.AutoFill Destination:=Range("AM294:AM2013"), Type:=xlFillDefault
Range("AM294:AM2013").Select
Sicherheitenobligo1.Select
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.PaperSize = xlPaperA4
End With
Cells.Select
ActiveSheet.ResetAllPageBreaks
For i = 1 To 111
If Cells(i, "Z") > 0 Then
Rows(Cells(i, "Z")).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End If
If Cells(i, "Z") = Range("AA2") Then Exit For
Next
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.PaperSize = xlPaperA4
.Zoom = 70
End With
Tabelle27.Visible = False
End Sub

Anzeige
AW: Bereiche definieren für Seitenumbruch
21.02.2007 09:01:23
Uwe
Hallo Andre,
ich glaube man merkt, dass ich nicht unbedingt der begnadeste Makro-Progammier bin. Du hast mein Makro von 27 Seiten auf eine Seite gekürzt. Unglaublich!
Von solchen Makros habe ich glaube ich eine Menge bei mir im Tool.
Vielen Dank. Hat bereits einen mächtigen Lerneffekt für mich.
Gruß
Uwe
AW: Bereiche definieren für Seitenumbruch
24.02.2007 08:16:06
schauan
Hallo Uwe,
hier weitere allgemeine Vorschläge. Einiges kommt durch Aufzeichnen so lang und ausführlich, wenn man weiss wo man ansetzen muss lässt sich viel vereinfachen.
'zwei Zeilen zu einer zusammenfassen
' Range("B315").Select
' ActiveCell.FormulaR1C1 = "Summe"
'ändern in
Range("B315").FormulaR1C1 = "Summe"
'3 Zeilen zu einer zusammenfassen
'Range("B294:C294,D294:H313,J294,K294:L313").Select
'Range("K294").Activate
'Selection.Locked = False
'ändern in
Range("B314:C314,D314:H333,J314,K314:L333").Locked = False
'nur Dinge programmieren die geändert werden sollen
'die auskommentierten könnten unwichtig sein
With Selection 'Hier ginge auch ein Zellbezug wie With Range("A1:A10")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
' .WrapText = False
' .Orientation = 0
' .AddIndent = False
' .IndentLevel = 0
' .ShrinkToFit = False
' .ReadingOrder = xlContext
' .MergeCells = False
End With
'Activate oft unnötig
Range("B315,C315,K315,L315,J317,N317,K317:L317").Select
' Range("K317:L317").Activate
'Hier geht auch ein Zellbezug
' Selection.Merge
'ändern in
Range("A1:A10").Merge
'Hier geht auch ein Zellbezug
' Selection.Font.Bold = True
' Selection.Borders(xlDiagonalDown).LineStyle = xlNone
' Selection.Borders(xlDiagonalUp).LineStyle = xlNone
'ändern in
Range("A1:A10").Font.Bold = True
Range("A1:A10").Borders(xlDiagonalDown).LineStyle = xlNone
Range("A1:A10").Borders(xlDiagonalUp).LineStyle = xlNone
'Hier reicht 1x wenn die Zellen auf allen Seiten den gleichen Rand bekommen
'ich lasse mal die Hochkommas weg ;-)
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
'ändern in
With Selection.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
'so was zusammenfassen, hier z.B. alles vom ActiveSheet.PageSetup
' With ActiveSheet.PageSetup
' .PrintTitleRows = "$4:$22"
' .PrintTitleColumns = ""
' End With
' ActiveSheet.PageSetup.PrintArea = "$B:$O"
' With ActiveSheet.PageSetup
' .Zoom = 70
' End With
'ändern in
With ActiveSheet.PageSetup
.PrintTitleRows = "$4:$22"
.PrintTitleColumns = ""
.PrintTitleRows = "$4:$22"
.PrintTitleColumns = ""
.PrintArea = "$B:$O"
.Zoom = 70
End With
'so was zusammenfassen
Range("A2:B290").Select
Selection.EntireRow.Delete
Selection.AutoFilter Field:=1
Selection.AutoFilter
'ändern in
With Range("A2:B290")
.EntireRow.Delete
.AutoFilter Field:=1
.AutoFilter
End With
'oder alternativ
Range("A2:B290").EntireRow.Delete
Range("A2:B290").AutoFilter Field:=1
Range("A2:B290").AutoFilter
...
Anzeige
AW: Bereiche definieren für Seitenumbruch
24.02.2007 08:42:20
schauan
Hallo Uwe,
hier ist noch ein Hammer - das letzte Makro - siehe auch Hinweis 3 Zeilen zu einer. Mit einer Schleife wird es ganz kurz.
Sub entsperren_Sicherheitenobligo1()
Sicherheitenobligo1.Unprotect
Sicherheitenobligo1.Select
Dim i As Integer
For i = 294 To 1514 Step 20
Range("B" & i & ":C" & i & ",D" & i & ":H" & i + 19 & ",J" & i & ",K" & i & ":L" & i + 19).Locked = False
Next
Range("A1").Select
End Sub

AW: Bereiche definieren für Seitenumbruch
25.02.2007 13:33:27
Uwe
Hallo Andre,
vielen Dank für deine Unterstützung und für die Leerstunden für mich.
Deine Optimierungen und Tipps machen mir spätere Ergänzungen um einiges leichter, da die Module übersichtlicher werden.
Grüße
Uwe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige