Excel-Dokument ausdrucken mit fortlaufender Nummer?

3 Antworten

Hast du mehrere Tabellen, die jeweils mit einer eigenen Seitenzahl ausgedruckt werden sollen?

Oder hast du eine Tabelle, die mehrfach ausgedruckt werden soll, jeweils mit einer eigenen Seitenzahl? In diesem Fall wüsste ich keinen Weg ohne Makro.


luettjepi 
Beitragsersteller
 02.06.2015, 15:39

Es ist im Prinzip ein und das selbe Blatt nur mit jeweils anderer Begleitscheinnummer .. Ich hab auch längere Zeit heute schon gegooglet und auch nur Tipps mit sogenannten Makros gefunden. Und dafür bin ich leider zu blöd haha Wenns halt nicht anders geht, dann mach ichs eben manuell..

0

Klick auf Fusszeile und dort einfügen Seitenzahl, dann sollte diese beim Druck fortlaufend auf jeder Seite vorhanden sein

Also ich habe mal etwas gebastelt. Das funktioniert aber nur, wenn die Druckreihenfolge "Seiten nach unten, dann nach rechts" (Seite einrichten → Blatt → Seitenreihenfolge) ist.


Sub Seite() Dim i Dim j Range("A2").Value = "Seite 1" ' fängt sonst erst beim ersten Umbruch an For i = 1 To Tabelle2.HPageBreaks.Count Set rZelleSpalte1 = Range(Tabelle2.HPageBreaks(i).Location.Address).Offset(1, 0) rZelleSpalte1.Value = "Seite " & (i + 1) For j = 1 To Tabelle2.VPageBreaks.Count If i = 1 Then _ Cells(2, VPageBreaks(j).Location.Column).Value = "Seite " & (i + (Tabelle2.HPageBreaks.Count + 1)) Cells(rZelleSpalte1.Row, VPageBreaks(j).Location.Column).Value = "Seite " & (i + (Tabelle2.HPageBreaks.Count + 2)) Next Next End Sub

Bei mir ist Tabelle2 die Tabelle, auf der die Seitenzahlen eingefügt werden sollen und zwar immer in die erste Spalte der zweiten Zeile der Seite.

Da wir mit Umbrüchen hantieren, müssen wir die Zellen am Anfang direkt referenzieren.


Suboptimierer  02.06.2015, 16:37

Wenn du davon eine Excelformel machen willst, musst du die Zelle, deren Seitenzahl bestimmt werden soll, als Argument übergeben. (Oder hat jemand eine Idee, wie man in einer selbsterstellten Excelfunktion die Zelle herausfindet, in der die Formel eingetragen wurde?)

Mit dieser Zelladresse prüfst du, in welcher der von den Seitenumbrüchen aufgespannten Zellbereiche sie enthalten ist.

0
Suboptimierer  03.06.2015, 17:31
@Suboptimierer

Nun kann ich eine weitere Variante anbieten, bei der du im Excelarbeitsblatt einfach nur

="Seite" & Personal.xlsb!Seite()

eingeben brauchst.

Lege dir in dem VBA-Projekt Personal.xlsb (standardmäßig verfügbar) ein Modul mit folgendem Code an:

Public Function Seite() As Integer
 ' Gibt die Seite zurück, auf der sich die Zelle mit der Formel Seite befindet
 ' Seitenreihenfolge: erst oben-unten, dann links-rechts
 ' 03.06.2015

 Dim bGefunden As Boolean
 Dim i As Integer
 Dim j As Integer
 Dim iSelfZeile As Integer
 Dim iSelfSpalte As Integer
 Dim iStartTemp As Integer

 Seite = 0
 iSelfZeile = Application.Caller.Row
 iSelfSpalte = Application.Caller.Column

 ' Horizontale Seitentrenner durchsuchen
 bGefunden = False
 For i = 1 To ActiveSheet.HPageBreaks.Count
  iStartTemp = 0
  If i > 1 Then _
    iStartTemp = ActiveSheet.HPageBreaks(i - 1).Location.Row
  If (iStartTemp < iSelfZeile) And _
     (ActiveSheet.HPageBreaks(i).Location.Row > iSelfZeile) Then
    Seite = i
    bGefunden = True
  End If
 Next
 If bGefunden = False Then _
  Seite = i

 ' Vertikale Seitentrenner durchsuchen
 bGefunden = False
 For j = 1 To ActiveSheet.VPageBreaks.Count
  iStartTemp = 0
  If j > 1 Then _
    iStartTemp = ActiveSheet.VPageBreaks(j - 1).Location.Column
  If (iStartTemp < iSelfSpalte) And _
     (ActiveSheet.VPageBreaks(j).Location.Column > iSelfSpalte) Then
    Seite = Seite + (j - 1) * (ActiveSheet.HPageBreaks.Count + 1)
    bGefunden = True
  End If
 Next
 If Not bGefunden Then _
  Seite = Seite + (j - 1) * (ActiveSheet.HPageBreaks.Count + 1)
End Function
0