ich habe ein Worksheet mit immer der gleichen Breite (Anzahl Spalten)
aber variierender Länge (Anzahl Zeilen). Diese will ich per Makro
ausdrucken. Dabei will ich ebenfalls per Makro abhängig von der Anzahl
der Zeilen Seitenumbrüche so festlegen, dass immer nach 36 Zeilen ein
Seitenumbruch eingefügt wird. Das versuchte ich mit den unten
stehenden Varianten zu lösen. Leider treten hierbei folg. Probleme
auf:
- beim "1. Versuch" schmeißt mir der Befehl "FitToPagesWide"
sämltiche Seitenumbrüche wieder raus
- beim "2. Versuch" kommt ab einer gewissen Anzahl Zeilen im Worksheet
die Fehlermeldung "Excel kann den Seitenumbruch nicht verschieben, da
sich dadurch die Skalierung unter den Minimalbereich von 10 % verlagern
würde". Dabei ist der mit "FitToPagesWide=1" korrelierende Zoomfaktor
etwa 80%...
Noch eine Info: Die ersten 8 Zeilen des Worksheet sind
Wiederholungszeilen die auf jedem Blatt gedruckt werden.
1. Versuch:
With ActiveSheet
For intCounter2 = 39 To intCounter1 Step 36
Set .HPageBreaks(1).Location = Rows(intCounter2)
For bytCounter1 = 1 To 30
.Rows(intCounter2 - bytCounter1).PageBreak =
xlPageBreakNone
Next bytCounter1
Next intCounter2
With .PageSetup
.FitToPagesWide = 1
End With
End With
2. Versuch:
With ActiveSheet
With .PageSetup
.FitToPagesWide = 1
End With
i = .HPageBreaks.Count
j = .Cells(Rows.Count, 1).End(xlUp).Row
.ResetAllPageBreaks
For j = 39 To j Step 36
Set .HPageBreaks(i - 1).Location = Rows(j)
Next j
End With
Ideen?
Vielen Dank im Voraus für alle Tipps!
Lieber Gruss, Kai
> ich habe ein Worksheet mit immer der gleichen Breite (Anzahl Spalten)
> aber variierender Länge (Anzahl Zeilen). Diese will ich per Makro
> ausdrucken. Dabei will ich ebenfalls per Makro abhängig von der Anzahl
> der Zeilen Seitenumbrüche so festlegen, dass immer nach 36 Zeilen ein
> Seitenumbruch eingefügt wird.
Meiner Erfahrung nach hat XL grundsätzlich Probleme mit Seitenumbrüchen, die
per VBA eingefügt werden.
Die mir bekannten Probleme können umgangen werden, wenn vorher in die
"Seitenumbruch-Vorschau" umgeschaltet wird. Ob Dein Problem dazu gehört weiß
ich nicht...
Aber versuch's mal:
Vor "...PageBreak =...":
ActiveWindow.View = xlPageBreakPreview
Danach, um in die normale Ansicht zurückzuschalten:
ActiveWindow.View = xlNormalView
Das sollte IMHO auch funktionieren, wenn Du "ActiveWindow.View =
xlPageBreakPreview" vor _allen_ "...PageBreak =..."-Anweisungen setzt und
"ActiveWindow.View = xlNormalView" nach _allen_. D.h. in Deinem Code sollte
es ausreichen, die Zeilen vor und nach der "intCounter2"-Schleife zu setzen.
Falls das in Deinem Fall nicht hilft, versuch mal, die Zeilen am Anfang und
Ende des Codes zu setzen.
Hoffe ich konnte Dir helfen.
Schönen Gruß
--
Michael
michael....@gmx.de
> Vor "...PageBreak =...":
> ActiveWindow.View = xlPageBreakPreview
>
> Danach, um in die normale Ansicht zurückzuschalten:
> ActiveWindow.View = xlNormalView
>
Das gibt zugegebenermaßen ein unschönes "Geflacker" beim Ein- und
Ausschalten der Vorschau. Um dies zu unterbinden füge
Application.ScreenUpdating = False
vor
ActiveWindow.View = xlPageBreakPreview
ein.
Und
Application.ScreenUpdating = true
nach
ActiveWindow.View = xlNormalView
ein.
Damit verhinderst Du, dass die Bildschirmanzeige (innerhalb von XL)
aktualisiert wird.
danke für deine Bemühungen, habe meinen Code deinen Vorschlägen
entsprechend angepasst, aber ab einer gewissen Anzahl von Zeilen kommt
immer die Fehlermeldung ""Excel kann den Seitenumbruch nicht
verschieben, da sich dadurch die Skalierung unter den Minimalbereich
von 10 % verlagern würde".
Sub TestDruck()
Application.ScreenUpdating = False
Dim intCounter1 As Integer, intCounter2 As Integer, intPageBreaks As
Integer
Dim bytCounter1 As Byte
ActiveWindow.View = xlPageBreakPreview
With ActiveSheet
intCounter1 = .Cells(Rows.Count, 1).End(xlUp).Row
intPageBreaks = .HPageBreaks.Count
For intCounter2 = 39 To intCounter1 Step 36
With .PageSetup
.FitToPagesWide = 1
End With
Set .HPageBreaks(intPageBreaks).Location = Rows(intCounter2)
For bytCounter1 = 1 To 30
.Rows(intCounter2 - bytCounter1).PageBreak =
xlPageBreakNone
Next bytCounter1
Next intCounter2
With .PageSetup
.FitToPagesWide = 1
End With
End With
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
End SuB
Vorschläge?
Danke & Beste Grüße, Kai
> danke für deine Bemühungen, habe meinen Code deinen Vorschlägen
> entsprechend angepasst, aber ab einer gewissen Anzahl von Zeilen kommt
> immer die Fehlermeldung ""Excel kann den Seitenumbruch nicht
> verschieben, da sich dadurch die Skalierung unter den Minimalbereich
> von 10 % verlagern würde".
[...Code gelöscht...]
> Vorschläge?
Ich muss zugeben, dass ich mir Deinen Code nach Deinem ersten Posting nicht
detailliert angesehen habe. Nachdem ich das nachgeholt habe, denke ich, dass
der Code aus mehreren Gründen nicht funktionieren kann. Würde aber jetzt zu
weit führen. Sag bescheid, wenn Du mehr wissen willst.
Versuchs mal mit folgendem Code:
Sub test()
Dim vRow As Integer
Dim vUsedRows As Integer
With ActiveSheet
vUsedRows = .UsedRange.Rows.Count
For vRow = 37 To vUsedRows Step 36
.HPageBreaks.Add Before:=.Cells(vRow, 1)
Next vRow
End With
End Sub
Hoffe ich konnte Dir helfen.
Schönen Gruß
--
Michael
michael....@gmx.de