Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Seitenzahl in Zelle

Seitenzahl in Zelle
27.06.2006 12:32:34
Kirsten
Hallo ihr Profis,
habe im Netz einen Super-Code für die Seitenzahl-Problematik gefunden.
Allerdings ist der Code so ausgelegt, dass man ihn über eine Schaltfläche starten muß.
Kann mir vielleicht von euch jemand behilf sein, um den Code so anzupassen, daß er immer automatisch ausgeführt wird, wenn man das Tabellenblatt bearbeitet bzw. druckt?
Perfekt wäre es dann noch, wenn das Makro nicht in der Seitenansicht stoppen würde, sondern wieder das Tabellenblatt aufruft.
Bin euch für jede Hilfe dankbar!
Liebe Grüße
Kirsten

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Glaskugel defekt..
27.06.2006 13:14:01
UweD
Hallo Kirsten
bitte mal den SUPER-Code hier veröffentlichen. Meine Glaskugel ist derzeit weg zur Reparatur....
Gruß UweD
AW: Glaskugel defekt..
27.06.2006 13:54:50
Kirsten
...und ich dachte ihr seid hier soooo gut, daß ihr auch schon hellsehen könnt ;-)
Oh Mann...wie peinlich!
Hier also der SUPER-Code:

Sub Seite_x_von_y_Seiten()
Dim iRow As Integer, Letzte_Zeile As Integer, Einzelseite As Integer
Dim Gesamtseitenzahl As String
Columns("E").ClearContents
Gesamtseitenzahl = ExecuteExcel4Macro("Get.Document(50)")
Letzte_Zeile = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("A1:E" & Letzte_Zeile).Address
Rows(Letzte_Zeile).Select
ActiveSheet.DisplayAutomaticPageBreaks = True
Range("E1").Value = "Seite 1 von " & Gesamtseitenzahl & " Seiten"
For Einzelseite = 1 To ActiveSheet.HPageBreaks.Count
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(0, 4).Value = "Seite " & _
Einzelseite + 1 & " von " & Gesamtseitenzahl & " Seiten"
Next Einzelseite
ActiveSheet.PrintPreview
Range("A1").Select
End Sub

Sorry noch einmal!
Gruß
Kirsten
Anzeige
AW: Glaskugel defekt..
27.06.2006 14:23:44
UweD
Hallo nochmal
Hab den Code was abgeändert und kommentiert.
Damit der Code automatisch abläuft, muß er durch das z.B. Change-Ereignis ausgelöst werden. Wenn du einen Zellwert änderst, wird das Makro angestoßen.
Dazu:
- rechtsclick auf den Tabellenblattreiter unten
- Code anzeigen
- Makro reincopieren

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim iRow As Integer, Letzte_Zeile As Integer, Einzelseite As Integer
Dim Gesamtseitenzahl As String
Application.EnableEvents = False
ActiveSheet.DisplayAutomaticPageBreaks = True
Columns("E").ClearContents 'löscht die Angaben
Gesamtseitenzahl = Application.Max(ExecuteExcel4Macro("Get.Document(50)"), _
ActiveSheet.HPageBreaks.Count)
Letzte_Zeile = Cells(Rows.Count, 1).End(xlUp).Row 'ermittlung der letzetn Zeile aus Spalte A
ActiveSheet.PageSetup.PrintArea = Range("A1:E" & Letzte_Zeile).Address
'Rows(Letzte_Zeile).Select
Range("E1").Value = "Seite 1 von " & Gesamtseitenzahl & " Seiten"
For Einzelseite = 1 To ActiveSheet.HPageBreaks.Count
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(0, 4).Value = "Seite " & _
Einzelseite + 1 & " von " & Gesamtseitenzahl & " Seiten"
Next Einzelseite
'ActiveSheet.PrintPreview 'hier wird die Voransicht aufgerufen. Kann entfallen
'Range("A1").Select
Fehler:
If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
Application.EnableEvents = True
End Sub

OK?
Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Glaskugel defekt..
27.06.2006 14:43:48
Lüers
Hi Kirsten,
du kopierst den Code am Besten in eine von den drei Excel-Standard Prozeduren, die ich in den Code kopiert habe. Du findest sie unter Mikrosoft Excel Objekte...DieseArbeitsmappe.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim iRow As Integer, Letzte_Zeile As Integer, Einzelseite As Integer
Dim Gesamtseitenzahl As String
Columns("E").ClearContents
Gesamtseitenzahl = ExecuteExcel4Macro("Get.Document(50)")
Letzte_Zeile = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("A1:E" & Letzte_Zeile).Address
Rows(Letzte_Zeile).Select
ActiveSheet.DisplayAutomaticPageBreaks = True
Range("E1").Value = "Seite 1 von " & Gesamtseitenzahl & " Seiten"
For Einzelseite = 1 To ActiveSheet.HPageBreaks.Count
ActiveSheet.HPageBreaks(Einzelseite) _
.Location.Offset(0, 4).Value = "Seite " & _
Einzelseite + 1 & " von " & Gesamtseitenzahl & " Seiten"
Next Einzelseite
'ActiveSheet.PrintPreview
Range("A1").Select
End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub

Das deine Super-Code außer der Seitenangabe noch einiges mehr ausführt ist dir schon klar oder? Damit der Code nicht in der Druckansicht stoppt, entfernst du die Zeile: 'ActiveSheet.PrintPreview oder du kommentierst sie aus, so wie ich es schon gemacht habe.
Liebe Grüße
Hannes
Anzeige
DANKE !!!! Ihr seid soooo gut!
27.06.2006 15:27:27
Kirsten
Danke Uwe und Danke Lüers!
Ihr seid nah dran an der Hellseherei!
Beide Vorschlägen klappen wunderbar! Jetzt hab ich die Qual der Wahl!
Liebe Grüße
Kirsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige