Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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

Seitenumbruch vor dem Drucken festlegen

Seitenumbruch vor dem Drucken festlegen
Stefan
Hallo zusammen
Folgendes will ich beim Ausdrucken der angehängten Datei automatisieren:
Vor jedem Ausdruck muss die Position des letzten Seitenumbruchs im aktiven Tabellenblatt überprüft werden. Dabei dürfen die letzten 7 Zeilen nicht unterbrochen werden, da in diesen Zeilen die Legende für die Tabelle enthalten ist. Das heisst: Das Makro muss vor dem Ausdrucken feststellen, ob sich der Letzte Umbruch nicht im Bereich der Legende (letzten 7 Zeilen) befindet (wie in Muster_Liste). Sollte sich der Umbruch im Bereich der Legende befinden, dann muss der Umbruch so nach oben verschoben werden, dass die Zeilen mit der Legende auf einer neuen Seite platziert werden. Wenn sich der letzte Umbruch nicht im Bereich der Legende befindet, können die vorgegebenen Standardumbrüche übernommen werden.
Ich habe das Forum nach einer ähnlichen Lösung durchsucht, bin aber leider nicht fündig geworden.
Vieleicht weiss jemand von euch, ob und wie ich die Aufgabe lösen kann.
Gruss
Stefan
Beispieldatei: https://www.herber.de/bbs/user/70954.xls
AW: Seitenumbruch vor dem Drucken festlegen
06.08.2010 16:52:15
Tino
Hallo,
teste mal so
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Dim RowLegende 
With Sheets("Allgemeine Projekte") 
     RowLegende = Application.Match("legende", .Columns(1), 0) 
     If IsNumeric(RowLegende) Then 
       .ResetAllPageBreaks 
       .HPageBreaks.Add .Cells(RowLegende, 1) 
     Else 
        Cancel = True 
        MsgBox "Legende nicht gefunden", vbExclamation 
     End If 
End With 
End Sub 
 
Gruß Tino
Anzeige
AW: Seitenumbruch vor dem Drucken festlegen
06.08.2010 17:20:01
Stefan
Hallo Tino
Vielen Dank für deine rasche Unterstützung. Dein Code ist leider nicht vollständig:
Der Umbruch darf nur neu gesetzt werden, wenn er sich im Bereich der Legende befindet, d.h. wenn sich der eine Teil der Legende auf der 2.-letzten Seite und der andere Teil der Legende auf der letzten Seite befindet (wenn die Legende abgeschnitten wird). Wenn das aber nicht der Fall ist, die Legende also noch Platz auf der angefangenen Seite hat, dann können die vorgegebenen Standardumbrüche für den Druck übernommen werden. In deimem Beispiel wird für die Legende immer eine neue Seite angefangen, was nicht in meinem Sinne ist.
Ansonsten funktioniert dein Code reibungslos. Ich hoffe, dass mein oben beschriebenes Kriterium noch eingebaut werden kann.
Gruss
Stefan
Anzeige
AW: Seitenumbruch vor dem Drucken festlegen
06.08.2010 16:58:02
fcs
Hallo Stefan,
das folgende Makro prüft und setzt den manuellen Seitenwechsel vor dem Drucken. Das Makro muss unter "DieseArbeitsmappe" eingefügtwerden. Testen kannst du es mit der Seitenvorschau.
Gruß
Franz
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim LetzteZeile As Long
Select Case ActiveSheet.Name
Case "Allgemeine Projekte"
With Worksheets("Allgemeine Projekte")
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'ggf. vorhandenen manuellen Seitenwechsel vor Legende löschen
If .HPageBreaks(.HPageBreaks.Count).Type = xlPageBreakManual _
And .HPageBreaks(.HPageBreaks.Count).Location.Row = LetzteZeile - 6 Then
.HPageBreaks(.HPageBreaks.Count).Delete
End If
'ggf. manuellen Seitenwechsel vor Legende löschen
If .HPageBreaks(.HPageBreaks.Count).Location.Row > LetzteZeile - 6 Then
.HPageBreaks.Add .Cells(LetzteZeile - 6, 1)
End If
End With
Case Else
'do nothing
End Select
End Sub

Anzeige
AW: Seitenumbruch vor dem Drucken festlegen
06.08.2010 17:43:53
Stefan
Hallo Franz
Dein Code ist genau die Lösung wie ich es mir vorgestellt habe. Es funktioniert alles reibungslos. Super!
Vielen Dank an euch beide für die tolle Unterstützung.
Gruss
Stefan
AW: Seitenumbruch vor dem Drucken festlegen
09.08.2010 11:52:49
Stefan
Hallo zusammen
Noch eine kleine Ergänzung:
Wie muss der Code erweitert werden, damit die 2.-letzte Seite (vor der angefangenen Seite mit der Legende) mit zusätzlichen leeren Zeilen bis zum letzten Umbruch aufgefülllt wird?
Gruss
Stefan
AW: Seitenumbruch vor dem Drucken festlegen
09.08.2010 13:03:16
fcs
Hallo Stefan,
wenn du Leerzeilen einfügen willst, dann muss du auch keinen manuellen Seitenumbruch setzen. Der automatische Seitenwechsel verschiebt sich dann ja entsprechend.
Gruß
Franz
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim LetzteZeile As Long, wks As Worksheet
Select Case ActiveSheet.Name
Case "Allgemeine Projekte"
Set wks = Worksheets("Allgemeine Projekte")
With wks
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Position letzter Seitenwechsel prüfen
If .HPageBreaks(.HPageBreaks.Count).Location.Row >= LetzteZeile - 6 Then
Application.ScreenUpdating = False
'Leerzeilen einfügen bis Legende auf Folgeseite
Do
.Rows(LetzteZeile - 6).Insert shift:=xlShiftDown
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
Loop Until .HPageBreaks(.HPageBreaks.Count).Location.Row 

Anzeige
AW: Seitenumbruch vor dem Drucken festlegen
09.08.2010 15:22:08
Stefan
Hallo Franz
Vielen Dank für die rasche Unterstützung. Jetzt ist es der Arbeitsablauf mit dem Seitenumbruch perfekt! Leider ist mir die 2. Variante erst später in den Sinn gekommen, sorry!
Gruss
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige