|
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 |
|
|
|
|
|
|