Edit geht leider nach kurzer Zeit nicht mehr, also muss ich mir mal wieder selbst antworten.
Ich möchte das nun anders machen. Die Idee, es über Fußzeile zu realisieren fand ich erstmal gut.
Also habe ich Google benutzt und folgenden VBA Code gefunden. Zunächst will ich ja realisieren, dass nur die jeweils letzte Seite eine Fußzeile enthält. Das kann die erste Seite sein, aber auch eine zweite Seite:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim lngZeile As Long
Dim rng As Range
Dim rngDruckbereich As Range
Dim MultiPage As Boolean
'Schleife verhindern
Application.EnableEvents = False
'Fehler abfangen --> EnableEvents wieder aktivieren
On Error GoTo ErrorHandler
'Druck abbrechen
Cancel = True
MultiPage = False
With Worksheets("Tabelle1")
'evtl vorhandenen Druckbereich entfernen
.PageSetup.PrintArea = False
'Untersten Seitenumbruch im genutzten Bereich des
'Tabellenblattes ermitteln. Dazu alle Zeilen von unten nach oben prüfen
For lngZeile = .UsedRange.Rows.Count To 1 Step -1
'Wenn die Zeile einen Seitenumbruch enthält ...
If .Rows(lngZeile).PageBreak <> xlPageBreakNone Then
'... Zelle der Spalte A dieser Zeile in Variable schreiben. Dies ist die oberste Zeile der letzen Druckseite
Set rng = .Cells(lngZeile, 1)
MultiPage = True
Exit For
End If
Next lngZeile
If MultiPage = True Then
'Mehrere Seiten
'Druckbereich auf alle Druckseiten, bis auf die unterste einstellen
.PageSetup.PrintArea = .Range(.Cells(1, 1), .Cells(rng.Row - 1, 8)).Address
MsgBox ("rng.row-1: " & rng.Row - 1)
'Fußzeile entfernen
.PageSetup.LeftFooter = ""
'Druckbereich ausdrucken
.PrintOut
'Fußzeile einfügen
.PageSetup.LeftFooter = "Fußzeile!!"
'Druckbereich auf die letzte Druckseite einstellen
.PageSetup.PrintArea = .Range(Cells(rng.Row, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).Address
MsgBox ("rng.row: " & rng.Row & Chr(10) & ".UsedRange.Rows.Count+1: " & .UsedRange.Rows.Count + 1)
'Druckbereich ausdrucken (letzte Druckseite mit Fußnote)
.PrintOut
'Druckbereich aufheben
.PageSetup.PrintArea = False
Else
'Eine Seite
'Druckbereich auf verwendeten Bereich einstellen
.PageSetup.PrintArea = .Range(Cells(1, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).Address
'Fußzeile einfügen
.PageSetup.LeftFooter = "Fußzeile!!"
'Normaler Ausdruck
.PrintOut
'Druckbereich aufheben
.PageSetup.PrintArea = False
End If
End With
Application.EnableEvents = True
Exit Sub
ErrorHandler:
'Bei Fehler EnableEvents wieder aktivieren
Application.EnableEvents = True
MsgBox ("Fehler beim Drucken")
Exit Sub
End Sub
Habe den Code dann in "DieseArbeitsmappe" kopiert und versucht zu drucken. Dieser Code funktioniert so noch nicht, springt direkt in den Error-Handler und öffnet die Message-Box "Fehler beim Drucken".
Wo der Fehler liegt, kann ich natürlich nicht sagen, aber vielleicht ist die Idee, die Fußnote über VBA zu realisieren an sich schonmal eine gute.
Im nächsten Schritt würde ich dann Inhalte für die Fußzeile definieren wollen und die Höhe der Fußzeile anpassen. Soweit ich gelesen habe, der Inhalt passend in die Fußzeile gesetzt wurde, kann dann auch nicht mehr passieren, dass Zeilen in den Fußbereich rutschen, da die Fußzeile das Seitenende andeutet....?