PDA

Vollständige Version anzeigen : Seitenwechsel beim Druck verhindern


DeBabba
28.08.2017, 11:51
Hallo zusammen,
Ich steh mal wieder vor einem Problemchen und hoffe auf eure Hilfe
Also...
Habe ein Blatt mit 173 Zeilen mit Detailangaben und einen Summenbereich von Zeile 174 bis 190. In den Details werden vor dem Druck alle Zeilen die nicht gefüllt sind ausgeblendet, so dass ich nur die Detailzeilen drucke, in denen was drin steht. Anschließend den Summenbereich
Frage:
Ich möchte vermeiden, dass innerhalb des Summenbereiches ein Seitenumbruch stattfindet.
kann man das via Makro hinbekommen und wenn Ja, wie kriege ich das hin

Kann mir da jemand helfen ? Hat jemand ne Idee ?

Gruß
DeBabba

Der Steuerfuzzi
28.08.2017, 12:45
Hallo,

der Summenbereich ist ja nicht allzu groß. Ich würde einen "zweigeteilten" Druckbereich erstellen. Dazu den Bereich mit den Detailangaben markieren, die Strg-Taste gedrückt halten und dann den Summenbereich markieren. Mit dieser Markierung dann einen Druckbereich festlegen.

Danach eventuell (bei Bedarf) unter Seite einrichten, den Druck auf "alle Spalten auf einer Seite" einstellen.

Jetzt sollte der Summenbereich immer auf einer neuen Seite gedruckt werden.

Drogist
28.08.2017, 12:47
Ja, du kannst in Excel einstellen, dass die Daten genau 1 Seite hoch sind.
Manche Drucker können das übrigens auch...

DeBabba
28.08.2017, 13:25
Vielen Dank für eure Tipps

Habe mir zwischenzeitlich das folgende überlegt (Bin gerade am Probieren)
Da der Summenbereich immer mit Zeile 174 anfängt, frage ich in einer Schleife die Zeile der Seitenumbrüche ab
For i = 1 To ActiveSheet.HPageBreaks.Count
MsgBox "Zeilenumbruch in Zeile " & ActiveSheet.HPageBreaks(i).Location.Row
Next i

Wenn die Zeile größer 173 (letzte mögliche Detailzeile) ist dann setze den Umbruch auf Zeile 174 (HBreaks.add)

Trotzdem Danke für eure Ideen

Gruß
DeBabba

Der Steuerfuzzi
28.08.2017, 13:32
Das gleiche macht mE mein Vorschlag, nur dass die Summenzeilen immer auf einem eigenen Blatt stehen.

Zudem brauchst Du keine Schleife, folgender Code sollte reichen, um die Zeile des letzen Seitenwechsels zu ermitteln:
Debug.Print ActiveSheet.HPageBreaks(ActiveSheet.HPageBreaks.Count).Location.Row

DeBabba
28.08.2017, 15:44
Hi Steuerfuzzi,
ja, da hast Du recht.
Jedoch sollte es so sein, dass die Summen nur dann auf nem neuen Blatt sein sollen wenn es nicht mehr draufpasst.
Standard war 1 Seite Breit x Seiten hoch
Hab ne Lösung gefunden. (Mit Pagesetup und und)
Schau mal hier
Sub MakePDF()
Dim I, PG, Dat, SH, Pfad, FiNa
Application.ScreenUpdating = False
Dat = Left(ActiveWorkbook.Name, InStr(1, ActiveWorkbook.Name, ".") - 1)
Pfad = ActiveWorkbook.Path & ""
ActiveWindow.View = xlPageBreakPreview
With ActiveSheet
SH = .Name
For I = 1 To .HPageBreaks.Count
PG = .HPageBreaks(I).Location.Row
If PG > 173 Then
Set .HPageBreaks(I).Location = Range("A173")
End If
Next I
End With
FiNa = Pfad & Dat & "-" & SH & "-" & Date & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FiNa, OpenAfterPublish:=True
ActiveWindow.View = xlNormalView

Call Seitenaufbau
Application.ScreenUpdating = True
End Sub
Sub Seitenaufbau()
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = "$11:$21"
.PrintTitleColumns = ""
End With
Application.PrintCommunication = True
If ActiveSheet.Name = "Quot2" Then
ActiveSheet.PageSetup.PrintArea = "$A$2:$J$189"
ElseIf ActiveSheet.Name = "Quot1" Then
ActiveSheet.PageSetup.PrintArea = "$A$2:$H$189"
End If
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.2)
.RightMargin = Application.InchesToPoints(0.12)
.TopMargin = Application.InchesToPoints(0.2)
.BottomMargin = Application.InchesToPoints(0.51)
.HeaderMargin = Application.InchesToPoints(0.31)
.FooterMargin = Application.InchesToPoints(0.12)
.PrintHeadings = False
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 10
End With
Application.PrintCommunication = True

End Sub


Funzt prima
Gruß
Klaus