8. Angabe der Seitenzahlen in einer Zelle

Aufgabenstellung:

Die Seitenzahl eines Tabellenblatts sollte nicht wie sonst üblich in der Fußzeile erscheinen, sondern in einer vorher festgelegten Zelle.

Dieses Beispiel steht auch als Beispieldatei zum Download zur Verfügung.


Realisiert wurde das in drei Varianten durch je eine VBA-Lösung.

Variante 1:  Die Seitenzahlen werden jeweils in der 4. Zeile und dort in den Spalten E eines neuen Druckblattes eingetragen. Auf jedem Druckblatt erscheint dann der Text Seite x von y Seiten.

Der Code ist in ein StandardModul einzufügen und sollte über eine Befehlsschaltfläche aufgerufen werden.


Sub Seite_x_von_y_Seiten()
Dim Letzte_Zeile As Integer, Einzelseite As Integer, _
Gesamtseitenzahl As String
'Einträge in Spalte I löschen
Columns("I").ClearContents

'Gesamtanzahl der Druckseiten ermitteln und in Variable
'"Gesamtseitenzahl" schreiben
Gesamtseitenzahl = ExecuteExcel4Macro("Get.Document(50)")

'Letzte beschriebene Zelle in Spalte A ermitteln und die Zeilenzahl
'in Variable "Letzte_Zeile" schreiben
Letzte_Zeile = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("A1:I" & Letzte_Zeile).Address
ActiveSheet.DisplayAutomaticPageBreaks = True

'In Zelle E4 den Text "Seite 1 von -hier dann die Gesamtseitenanzahl-
'Seiten" eintragen
Range("E4").Value = "Seite 1 von " & Gesamtseitenzahl & " Seiten"

'For/Next Schleife zum Eintragen der Seitenzahl auf jedem Druckblatt
For Einzelseite = 1 To ActiveSheet.HPageBreaks.Count

'In jeder 4. Zeile eines neuen Blattes die Seitenzahl eintragen
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(3, 4).Value = "Seite " & _
Einzelseite + 1 & " von " & Gesamtseitenzahl & " Seiten"
Next Einzelseite
End Sub

 

Variante 2:  Die Seitenzahlen werden jeweils in der 4. Zeile und dort in den Spalten E, F, G, H eines neuen Druckblattes eingetragen. Es wurde eine  Lösungsmöglichkeit über vier Spalten gewählt, da auf dem Druckblatt der Text Seite x von y Seiten in 4 Spalten aufgeteilt werden sollte.

Der Code ist in ein StandardModul einzufügen und sollte über eine Befehlsschaltfläche aufgerufen werden.


Sub Seite_Seiten()
Dim Letzte_Zeile As Integer, Einzelseite As Integer, _
Gesamtseitenzahl As String

'Einträge in Spalte E, F, G und I löschen
Columns("e:i").ClearContents

'Gesamtanzahl der Druckseiten ermitteln und in Variable
'"Gesamtseitenzahl" schreiben
Gesamtseitenzahl = ExecuteExcel4Macro("Get.Document(50)")

'Letzte beschriebene Zelle in Spalte A ermitteln
'und die Zeilenzahl in Variable "Letzte_Zeile" schreiben
Letzte_Zeile = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("a1:i" & _
Letzte_Zeile).Address
ActiveSheet.DisplayAutomaticPageBreaks = True

'In Zelle E4 den Text "Seite" eintragen
Range("e4").Value = "Seite"

'In Zelle F4 den Text "1" eintragen
Range("f4").Value = "1"

'In Zelle G4 den Text "von" eintragen
Range("g4").Value = "von"

'In Zelle H4 den Wert der Variablen
'"Gesamtseitenzahl" eintragen
Range("h4").Value = Gesamtseitenzahl

'In Zelle I4 den Text "Seiten" eintragen
Range("i4").Value = "Seiten"

'For/Next Schleife zum Eintragen der Seitenzahl auf
'jedem Druckblatt
For Einzelseite = 1 To ActiveSheet.HPageBreaks.Count

'In jeder 4. Zeile eines neuen Blattes in Spalte E den Text
'"Seite" eintragen
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(3, 4).Value = "Seite"

'In jeder 4. Zeile eines neuen Blattes in Spalte F den Wert
'"Einzelseite" + 1 eintragen
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(3, 5).Value = Einzelseite + 1

'In jeder 4. Zeile eines neuen Blattes in Spalte G den Text
'"von" eintragen
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(3, 6).Value = "von"

'In jeder 4. Zeile eines neuen Blattes in Spalte H
'den Wert "Gesamtseitenzahl" eintragen
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(3, 7).Value = Gesamtseitenzahl

'In jeder 4. Zeile eines neuen Blattes in Spalte I den Text
'"Seiten" eintragen
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(3, 8).Value = "Seiten"
Next Einzelseite
End Sub

Variante 3:  Die Seitenzahlen werden jeweils in der 1. Zeile und dort in den Spalten  F eines neuen Druckblattes eingetragen. Auf jedem Druckblatt erscheint dann der Text Seite x von y .

Der Code ist in ein StandardModul einzufügen und sollte über eine Befehlsschaltfläche aufgerufen werden.

Option Explicit

Sub Seiten_x_von_y()
Application.ScreenUpdating = False
Dim Tabellenblattname As Worksheet
Set Tabellenblattname = Sheets("Seite x von y")

'Wert in den Zellen in Spalte F löschen
Range("f1, f65, f127, f190, f253, f316").ClearContents

'Wenn der Wert in A4 größer dem Wert 0 ist, dann...
If Tabellenblattname.[a4] > 0 Then
'... in Zelle F4 den Text "Seite 1 von 1" eintragen
Tabellenblattname.[f4] = "Seite 1 von 1"
End If

'Wenn der Wert in A68 größer dem Wert 0 ist, dann...
If Tabellenblattname.[a68] > 0 Then
'... in Zelle F4 den Text "Seite 1 von 2" eintragen
Tabellenblattname.[f4] = "Seite 1 von 2"
'... in Zelle F4 den Text "Seite 2 von 2" eintragen
Tabellenblattname.[f64] = "Seite 2 von 2"
End If

'Wenn der Wert in A131 größer dem Wert 0 ist, dann...
If Tabellenblattname.[a131] > 0 Then
'... in Zelle F4 den Text "Seite 1 von 3" eintragen
Tabellenblattname.[f4] = "Seite 1 von 3"
'... in Zelle F4 den Text "Seite 2 von 3" eintragen
Tabellenblattname.[f64] = "Seite 2 von 3"
'... in Zelle F4 den Text "Seite 3 von 3" eintragen
Tabellenblattname.[f127] = "Seite 3 von 3"
End If

'Wenn der Wert in A194 größer dem Wert 0 ist, dann...
If Tabellenblattname.[a194] > 0 Then
'... in Zelle F4 den Text "Seite 1 von 4" eintragen
Tabellenblattname.[f4] = "Seite 1 von 4"
'... in Zelle F4 den Text "Seite 2 von 4" eintragen
Tabellenblattname.[f64] = "Seite 2 von 4"
'... in Zelle F4 den Text "Seite 3 von 4" eintragen
Tabellenblattname.[f127] = "Seite 3 von 4"
'... in Zelle F4 den Text "Seite 4 von 4" eintragen
Tabellenblattname.[f190] = "Seite 4 von 4"
End If

'Wenn der Wert in A257 größer dem Wert 0 ist, dann...
If Tabellenblattname.[a257] > 0 Then
'... in Zelle F4 den Text "Seite 1 von 5" eintragen
Tabellenblattname.[f4] = "Seite 1 von 5"
'... in Zelle F4 den Text "Seite 2 von 5" eintragen
Tabellenblattname.[f64] = "Seite 2 von 5"
'... in Zelle F4 den Text "Seite 3 von 5" eintragen
Tabellenblattname.[f127] = "Seite 3 von 5"
'... in Zelle F4 den Text "Seite 4 von 5" eintragen
Tabellenblattname.[f190] = "Seite 4 von 5"
'... in Zelle F4 den Text "Seite 5 von 5" eintragen
Tabellenblattname.[f253] = "Seite 5 von 5"
End If

'Wenn der Wert in A320 größer dem Wert 0 ist, dann...
If Tabellenblattname.[a320] > 0 Then
'... in Zelle F4 den Text "Seite 1 von 6" eintragen
Tabellenblattname.[f4] = "Seite 1 von 6"
'... in Zelle F4 den Text "Seite 2 von 6" eintragen
Tabellenblattname.[f64] = "Seite 2 von 6"
'... in Zelle F4 den Text "Seite 3 von 6" eintragen
Tabellenblattname.[f127] = "Seite 3 von 6"
'... in Zelle F4 den Text "Seite 4 von 6" eintragen
Tabellenblattname.[f190] = "Seite 4 von 6"
'... in Zelle F4 den Text "Seite 5 von 6" eintragen
Tabellenblattname.[f253] = "Seite 5 von 6"
'... in Zelle F4 den Text "Seite 6 von 6" eintragen
Tabellenblattname.[f316] = "Seite 6 von 6"
End If
End Sub

 


Dieses Beispiel wurde unter den in der Tabelle aufgeführten Versionen getestet.

  A B C D E
1        

2

 

Excel - Version

Getestet

 
3      
4   Excel 2007 12.0 a  
5   Excel 2003 11.0 a  
6   Excel 2002 10.0 a  
7   Excel 2000 9.0 a  
8   Excel 97 8.0    
9          
10   Anzahl der Downloads:

 
11          
12   Dieses Beispiel wurde bereits  x aufgerufen.  
13    
14          

 


> Beispieldatei herunterladen <

  Sollten beim Ausführen der Beispieldatei Fehler auftreten, bitte ich darum, mir eine Mail mit der Fehlerbeschreibung an fehler@excelbeispiele.de zu schicken.
Danke!

 Möchten Sie www.excelbeispiele.de in Ihre Favoriten aufnehmen? Dann Klicken Sie hier.
 

Kontakt:

letzte Aktualisierung am 06.01.2008

© 2004 - Copyright Oliver Scheckelhoff,
All Rights Reserved