Hallo Stefan,
so ganz passt Dein Code nicht zu den Vorgaben.
Du schreibst von
Zeilenumbruch oberhalb
nach den Zweilevel-Überschriften. Dein Programm fügt dagegen
Seitenumbrüche vor den Überschriften ein. Ich nehme an, dass auch dies gemeint ist, weil es doch sinnvoller erscheint.
Dein Fehler liegt im .Execute innerhalb der IF-Abfrage. Damit wird die eigentlich Suche erst im zweiten Schleifendurchlauf der FOR-Schleife durchgeführt und damit ist automatisch die Bedingung schon bei der ersten gefundenen Überschrift2 wahr.
Im folgenden ein etwas verkürzter Code. Zwei Durchläufe sind für diese Aufgabe ja eigentlich nicht nötig.
Code:
y = 0 'Anzahl vorhandener Überschriften 2.Ebene
ya = 0 'Anzahl aller vorgenommenen Seitenumbrüche
Selection.HomeKey Unit:=wdStory
With ActiveDocument.Content.Find 'Ermittlung aller vorhandenen Überschriften 2.Ebene
.ClearFormatting
.Style = wdStyleHeading2
Do While .Execute(FindText:="", Forward:=True, Format:=True) = True
If y > 0 Then
.Parent.ParagraphFormat.PageBreakBefore = True
ya = ya + 1
End If
y = y + 1
Loop
End With
End Sub
Gruß,
Bernd