2.9k Aufrufe
Gefragt in Tabellenkalkulation von mimadel Mitglied (117 Punkte)
Hallo zusammen,

ich habe ein Problem, dass ich trotz intensiver Netzrecherche und unzähligen Versuchen einfach nicht lösen kann.

Hintergrund:
ich habe ein Formular entwickelt, das auf zwei Seiten ausgedruckt werden soll.
Die Datei ist für mehrere Kollegen freigegeben und es taucht unregelmäßig das Problem auf, dass die Druckbereichsformatierung verändert wird. Keine Ahnung warum.

Dies will ich nun per Makro ein für allemal festschreiben.

Diesen Code verwende ich derzeit:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Druck" Then
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$52"
ActiveSheet.PageSetup.Zoom = False
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = False
End If
End Sub

Das bringt mir zwar die Sortierung auf die (gewünschte) eine Seite breit und die (gewünschten) zwei Seiten lang, der Zeilenumbruch soll aber bei Zeile 36 stattfinden. Und das bekomme ich nicht hin.

Folgende Befehle habe ich mal einzeln eingebaut gehabt:
1) ActiveSheet.Rows(36).PageBreak = xlPageBreakManual
2) ActiveSheet.HPageBreaks(36).Type = xlPageBreakManual

Beides führt aber nicht zum gewünschten Erfolg.
Kann mir jemand sagen, was ich einfügen muss, damit fest und unverändert bei Zeile 36 der Seitenumbruch eingefügt wird? Das Formular ist fix und wird nicht mehr geändert.

DANKE vorab für Mithilfe,
michael

4 Antworten

0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Nachtrag: ich bin noch auf Excel 2003 unterwegs....
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Hi,

habe noch ein bißchen rumgewühlt und nun die Lösung (zumindest für mich) gefunden:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

If ActiveSheet.Name = "Dokumentation" Then
ActiveSheet.ResetAllPageBreaks
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$53"
ActiveSheet.PageSetup.Zoom = False
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = False
ActiveSheet.HPageBreaks.Add before:=Rows("37")
End If

End Sub

Die Zeile "... HPageBreaks.Add ..." hatte ich zuvor auch schon mal drin, aber da hat mir Excel immer drei Seiten produziert.
Des Rätsels Lösung war nun, zuvor die Seitenansicht und den Druckbereich komplett auf "null" zu stellen. Jetzt funktioniert es.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Michael,

oder gleich das Zurücksetzen der Seitenumbrüche mit einbauen:

If ActiveSheet.Name = "Druck" Then
With ActiveSheet
.PageSetup.PrintArea = "$A$1:$F$52"
.PageSetup.Zoom = False
.PageSetup.FitToPagesWide = 1
.PageSetup.FitToPagesTall = False
.ResetAllPageBreaks 'Alle Seitenumbrüche zurücksetzen
.HPageBreaks.Add Before:=Cells(37, 1) 'Möglichkeit 1
'.Rows(37).PageBreak = xlPageBreakManual 'Möglichkeit 2
End With
End If


Gruß

M.O.
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Hi M.O.,

nee, lieber nicht danach wieder zurücksetzen - ich will den anderen Usern zwanghaft dieses Format aufzwingen... :-)

Aber danke für den Tipp!!

Beste Grüße,
michael
...