Seitenwechsel und Zwischensummen per Makro ermitteln

Sie arbeiten mit einer längeren Kalkulationstabelle. Dort möchten Sie die Seitenwechsel für den Ausdruck ermitteln und für die einzelnen Druckseiten eine Teilsumme berechnen. Die Tabelle soll dabei aber flexibel bleiben und auch nach dem Einfügen von Daten oder Änderungen der Formatierung wieder die aktuellen Summen auf der gedruckten Seite ausweisen.

Hauptaufgabe ist zunächst, die Seitenumbrüche automatisch mit einem Makro zu bestimmen. Bei bekannten Seitenumbrüchen können Sie dann die Summenbildung recht einfach ergänzen.

Mittels VBA können Sie diese Aufgabe lösen. Das Objekt »HPageBreaks« liefert Ihnen die Informationen zum Bestimmen der Umbrüche. In den so ermittelten Zeilen können Sie die Summenformeln für die einzelnen Seiten einfügen.

Öffnen Sie Ihr Arbeitsblatt in Excel und führen Sie »Extras | Makro | Makros« aus. Geben Sie einen Namen wie »Seitenwechsel« ein und klicken Sie auf »Erstellen«. Im VBA-Editor geben Sie dann den folgenden Programmcode ein oder Sie kopieren ihn von der Heft-CD unter CHIP-Code Wechsel:



Sub Seitenwechsel()
Dim Zeile(100) As Integer
Dim i As Integer
Dim XStr As String
Anzahl = Worksheets(1).
HPageBreaks.Count
If Anzahl = 0 Then
Anzahl = 1
Cells(Rows.Count, 1) = 1
Zeile(1) = Worksheets(1).
HPageBreaks(1).Location.
Row - 1
Cells(Rows.Count, 1).
ClearContents
End If

For i = 1 To CInt(Anzahl)
Zeile(i) = Worksheets(1).
HPageBreaks(i).Location.Row - 1
Next i

Zeile(0) = 0
For i = 1 To Anzahl
Cells(Zeile(i), 5).Select
æSelection.EntireRow.Insert
XStr = “=sum(Aö & CStr(Zeile(i - 1) + 1) & “:Aö & CStr(Zeile(i)) & “)ö
ActiveCell.Formula = XStr
Next i
End Sub



Und so arbeitet das Listing: Nach der Definition der nötigen Variablen ermittelt das Makro die Zahl der vorhandenen Seitenwechsel und speichert sie in der Variablen »Anzahl«. Falls die Tabelle noch keinen Umbruch hat, weist das Makro einer Zelle am Tabellenende temporär einen Wert zu und ermittelt den ersten Seitenumbruch. Die nächste Schleife bestimmt die Zeilennummern aller Seitenumbrüche der Tabelle und speichert Sie im Feld »Zeile«. Eine weitere Schleife durchläuft alle gefundenen Umbrüche, um dort die Teilsummen für die einzelnen Seiten einzufügen. In unserem Beispiel benutzt das Makro die fünfte Spalte (E) der jeweils letzten Zeile auf einer Seite.

Der folgende Befehl setzt aus der vorhergehenden und der aktuellen Zeilennummer des Seitenwechsels den Summenbefehl zusammen und speichert ihn in der Variablen »XStr«. Im nächsten Schritt schreibt das Makro diese Formel in die aktive Zelle. Die Summenberechnung erfolgt in der Schleife für sämtliche Seitenwechsel.

Mit »Selection.EntireRow.Insert« können Sie für die Summenberechnung auch eine neue Zeile am Seitenende einfügen. Die Gefahr dabei: Die Tabelle wird bei wiederholter Ausführung der Makros durch Leerzeilen zerstückelt.