AW: variabler Seitenumbruch mittels VBA
11.05.2015 13:25:59
fcs
Hallo twobbi,
im Prinzip kann man so etwas per VBA steuern.
Voraussetzung ist, dass das Ende und/oder der Anfang der zu einer Anlyse gehörenden Zeilen eindeutig identifiziert werden kann (z.B. bestimmter Zellinhalt in einer Spalte).
Dann kann man falls erforderlich manuelle Seitenwechsel in Zeilen per VBA setzen.
Das Makro läuft dann wie folgt ab:
1. Alle Seitenwechsel löschen
2. Start der 1. Analyse suchen
3 Start der nächsten Analyse suchen bzw. letzte Zeile
3.1 Prüfen, ob ein automatischer Seitenwechsel vorhanden ist - Zeile merken.
3.2 Wenn ja dann vor Startzeile einen manuellen Seitenwechsel setzen
3.3 Neue Startzeile setzen, gemerkte Seitenwechselzeile zurücksetzen
5. Für die weiteren Analysen den Schritte 3 wiederholen
Sieht als Makro dann wie folgt aus, wobei die Prüfungen für den Beginn einer weiteren Analyse individuell anpassen muss.
Gruß
Franz
'Erstellt/getestet unter Excel 2010
Sub Seitenwechsel_setzen()
Call SeitenwechselAnalysen(wks:=ActiveSheet)
End Sub
Sub SeitenwechselAnalysen(wks As Worksheet)
Dim Zeile As Long
Dim Zeile_1 As Long, Zeile_2 As Long, Zeile_L As Long, Zeile_PB As Long
Dim strTest As String
strTest = "Analyse" 'eindeutiger Textanfang in Zelle in Spalte A bei jeder neuen _
Analyse, oberhalb der Zelle ist immer eine leere Zelle
With wks
.ResetAllPageBreaks
'letzte benutzte Zeile im Blatt
Zeile_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
For Zeile = 1 To Zeile_L
'1. Analyse finden-Zelle in Zeile ist leer, darunter ist der Test-Text enthalten
If .Cells(Zeile, 1).Text = "" _
And Left(.Cells(Zeile, 1).Text, Len(strTest)) = strTest Then
Zeile_1 = Zeile
End If
Do
Zeile = Zeile + 1
'Zeile eines automatischen Seitenwechsels ggf. merken
If .Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakAutomatic Then
Zeile_PB = Zeile
End If
'Prüfen, ob weitere Analyse beginnt oder letzte Zeile erreicht ist
If (.Cells(Zeile, 1).Text = "" _
And Left(.Cells(Zeile + 1, 1).Text, Len(strTest)) = strTest) _
Or Zeile = Zeile_L Then
Zeile_2 = Zeile 'Zeile der nächsten Analys merken
If Zeile_PB 0 And Zeile_PB Zeile_2 Then '--> Seitenwechsel innerhalb Analyse
.Cells(Zeile_1, 1).PageBreak = xlPageBreakManual
End If
Zeile_1 = Zeile_2
Zeile_PB = 0
Zeile_2 = 0
If Zeile >= Zeile_L Then Exit For
End If
Loop
Next
End With
End Sub