Seitenumbruch
18.11.2008 10:16:00
KViertel
Ich kaue an einem Problem, bei dessen Lösung ich eure Hilfe erhoffe.
Es handelt sich darum, dass ich eine Tabelle, die durch eine Auswertung gefüllt wird ausdrucken möchte.
Da die Tabelle dynamisch von unterschiedlichen Ausgangswerten gefüllt wird, müssen jeweils die Seitenumbrüche unterschiedlich eingefügt werden, damit nicht zusammengehörende Teilgruppen auseinander gerissen werden.
Dazu selektiere ich die 1. Spalte (da die Zwischensummen in der ersten Spalte leer sind) und sammle in einer Matrix die Zeilennummern der leeren Zeilen. Vorher habe ich mit "Activesheet.ResetAllPageBreaks" alle vorher durch eine andere Auswertung gesetzten Seitenumbrüche gelöscht.
Da insgesamt jeweils 32 Zeilen auf dem Ausdruck untergebracht werden, und die ersten 5 Zeilen auf jedem Blatt wiederholt werden, prüfe ich ob der akt. Wert > als (25 * Zahl der Umbrüche) ist. Wenn ja, dann setze in der Zeile des Matrixindex -1 den Seitenumbruch.
Das funktioniert auch aus meiner Sicht gut. Aber ich habe jetzt dauernd im Bereich der Zeilen um 40 einen automatischen Umbruch, der sich ohne Probleme händig auf den nächsten vorgesehenen SB verschieben läßt. Dadurch erhalte ich aber immer einen nicht vorgesehenen SB und eine zerpflügte Tabelle.
Sub umbruch()
Dim umb() As Integer
ws_A.Activate
ActiveSheet.ResetAllPageBreaks
Range("A6").Select
drow = Range("A65536").End(xlUp).Row
dcol = Range("A65536").End(xlUp).Column
ws_A.Range(Cells(6, dcol), Cells(drow, dcol)).Select
n = 1
For Each u In Selection
X = u.Value
If X = "" Or Left(X, 2) = "FA" Then
ReDim Preserve umb(n)
umb(n) = u.Row
n = n + 1
End If
Next
'weil der Zähler n jetzt um 1 größer ist als der größte Index der Matrix "umb" ist
'wird n um 1 reduziert
n = n - 1
umb1 = 1 'Zähler der Umbrüche
For i = 1 To n
u1 = umb(i)
If i + 1 (25 * umb1) Then
Range(Cells(u1 + 1, dcol), Cells(u1 + 1, dcol)).Select
ActiveSheet.HPageBreaks.Add before:=Selection
umb1 = umb1 + 1
End If
Next
End Sub
Mache ich hier evtl einen gedanklichen Fehler oder was könnte der Grund dafür sein, dass diese automatischen Umbrüche eingefügt werden.
MfG. Klaus