Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Seite x von y in Zelle

Forumthread: Seite x von y in Zelle

Seite x von y in Zelle
22.01.2015 20:41:11
y
Hallo,
zu der Fragestellung Seite x von y habe ich im Forum einen 12 Jahre alten beitrag gefunden: https://www.herber.de/forum/archiv/212to216/214123_formel_fuer_Seite_x_von_x.html
Ich habe alle nötigen Variablendeklarationen ergänzt, aber der Code produziert nur die Fehlermeldung #WERT!.
Gibt es hierzu eine neuer Version oder eine Vermutung warum der Code nicht funktioniert?
Gruß,
Peter

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seite x von y in Zelle
23.01.2015 09:37:21
y
Hallo Peter,
Win7, xl2010: Code läuft.
Ich habe "Option Explicit" rausgenommen, statt die Deklarationen zu ergänzen. Vielleicht hast du dabei ja einen Fehler gemacht.
Dass du den Code in ein Modul kopieren musst ist aber klar, oder?
Grüße,
Klaus M.vdT.

AW: Seite x von y in Zelle
23.01.2015 10:24:10
y
Moin Klaus,
Code steht in eigenem Modul
Ich habe nun auch die Deklarationen raus geschmissen und die Funktion läuft...Fast.
Keine Fehlermeldung, aber auch keine Änderung der Werte, wenn sich etwas am Aufbau der Arbeitsmappe ändert.
Um die aktuellen Werte von Seitenanzahl und Seitenzahl zu erhalten muss ich die Funktion neu eingeben.
Woran könnte es liegen? Win7, xl 2013 werden verwendet.
Gruß,
Peter

Anzeige
AW: Seite x von y in Zelle
23.01.2015 10:42:04
y
Um die aktuellen Werte von Seitenanzahl und Seitenzahl zu erhalten muss ich die Funktion neu eingeben.
Das ändern der Seitenzahl löst ja auch keine Neuberechnung aus. Benutze Trick 17, um die Formel volatil zu machen:
=SEITEN()+JETZT()*0
JETZT()*0 ergibt natürlich 0, und SEITEN+0 ergibt immer noch die Seitenzahl. Der Trick: JETZT() muss bei jeder Änderung neu berechnet werden (logisch). Dadurch zwingst du Excel, auch den Formelteil SEITEN() bei jeder Änderung zu berechnen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Seite x von y in Zelle
23.01.2015 10:50:17
y
Genial!
Danke, da hat der neue Tag doch schon wieder einen guten Anfang gefunden.
Gruß,
Peter

Danke für die Rückmeldung! owT.
23.01.2015 11:04:17
Klaus
.

AW: Danke für die Rückmeldung! owT.
23.01.2015 14:01:47
Peter
Hallo,
ich muss dieses Thema noch einmal aufgreifen und bin zutiefst verwirrt.
Die angesprochenen UDFs Seite() und Seiten() haben mit der Erweiterung zur Aktualisierung scheinbar herrvorragend gearbeitet.
ABER:
Wenn ich mehrere Seiten habe und diese Funktionen benutze, zeigt sie mir die richtige Seitenanzahl an. Die Funktion Seite() liefert aber immer als Ergebniss die Seite, auf der sich gerade die Zellmarkierung befindet.
Habe ich also mehrere Seiten, auf denen diese Angabe erscheinen soll, erscheint überall die Seitenzahl abhängig von der Position der Zellmarkierung.
Nicht schön...und es treibt mich in den Wahnsinn!
Bitte um Hilfe!
Peter

Anzeige
AW: Danke für die Rückmeldung! owT.
23.01.2015 14:27:24
Klaus
Hallo Peter,
die Function "Seite" bezieht sich auf "activecell":
Function Seite()
SeiteX = seitenzahl(ActiveCell, "x")
SeiteY = seitenzahl(ActiveCell, "y")
[..]

in dem Moment in dem du die eingibst, ist "activecell" auf der richtigen Seite. Wie du selbst bemerkt hast, aktualisiert sich das nicht - daher funktioniert es. Diesen "dirty Trick" umgehst du jetzt mit dem anderen "dirty Trick" da "jetzt()*0" dran zu hängen.
Lösung: mache den Code etwas weniger dirty und beziehe dich in SEITE() nicht auf ActiveCell, sondern auf Zelle-aus-der-Funktion-aufgerufen-wird, auch application.caller genannt:
Function Seite()
SeiteX = seitenzahl(Application.Caller, "x")
SeiteY = seitenzahl(Application.Caller, "y")
Grüße,
Klaus M.vdT.

Anzeige
AW: Danke für die Rückmeldung! owT.
23.01.2015 14:36:03
Peter
Hallo Klaus,
vielen Dank...schon wieder.
Ich hatte mir gedacht, dass es an active cell liegt, aber eine Lösung wie ich das ersetzen kann hatte ich nicht gefunden.
Gruß,
Peter

AW: Danke für die Rückmeldung! owT.
23.01.2015 14:39:26
Peter
(Hoffentlich) Letzte Anmerkung:
Die Funktion berücksichtigt alle Seiten mit Inhalt UND Zellformaten wie Rahmenlinien, Zellfarben etc.
Dies verlangt im Moment nicht nach einer Lösung, aber man sollte darauf achten.
Gruß,
Peter

Anzeige
Seitenanzahl PrintArea
23.01.2015 14:48:00
Klaus
... bezieht sich ja auch auf die "Used Range". Für einen 12-Jahre alten Zufallsfund find ich die ziemlich gut!
Bei jeder Aktualisierung aufwendig die tatsächlich letzte Zeile und Spalte unabhängig von der Usedrange zu ermitteln halte ich für praxisfremd, da zu aufwendig um es volatil laufen zu lassen. Wenn ich das korrigieren sollte, hätte ich die Idee damit zu experimentieren die "UsedRange" im Code gegen die "PageSetup.PrintArea" auszutauschen, aber das funktioniert nicht auf Anhieb und der Code ist nicht von mir, darum will ich da gar nicht weiter eintauchen - wahrscheinlich müsste man weite Teile komplett neu schreiben damit das geht.
Grüße,
Klaus M.vdT.

Anzeige
Eine wichtige Korrektur noch!
23.01.2015 14:57:05
Klaus
Hallo Peter,
wenn du die SEITEN()-Funktion zwangsvolatil benutzt, solltest du unbedingt die folgende Codezeile rauswerfen:
MsgBox "Papierformat nicht erkannt!": Exit Function
sonst kommt eine böse Endlosschleife, sobald ein Papierformat ausser A3,A4,A5 gewählt wurde.
Grüße,
Klaus M.vdT.

Anzeige
AW: Eine wichtige Korrektur noch!
23.01.2015 16:26:03
Peter
Danke dafür.
Ich werde dich übrings nochmal wg. der Xverweis-Fkt. behelligen :-)

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Seitenzahlen in Excel: Seite x von y in Zelle einfügen


Schritt-für-Schritt-Anleitung

Um die Seitenzahlen in Excel einzufügen, kannst du die folgende Vorgehensweise nutzen:

  1. Öffne Excel und erstelle ein neues Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsmappename)“ und wähle „Einfügen“ > „Modul“.
  2. Füge die Funktion ein:

    • Kopiere den folgenden Code und füge ihn in das Modul ein:
    Function Seite()
       Dim SeiteX As Integer
       Dim SeiteY As Integer
       SeiteX = seitenzahl(Application.Caller, "x")
       SeiteY = seitenzahl(Application.Caller, "y")
       Seite = "Seite " & SeiteX & " von " & SeiteY
    End Function
  3. Verwende die Funktion in einer Zelle:

    • Gehe zurück zu deinem Arbeitsblatt und wähle die Zelle aus, in der du die Seitenzahl anzeigen möchtest.
    • Gib die Formel =Seite() ein und drücke Enter.
  4. Aktualisierung der Werte:

    • Um sicherzustellen, dass die Seitenzahlen immer aktuell sind, füge den Trick mit JETZT() hinzu:
    =Seite()+JETZT()*0

    Dies zwingt Excel, die Formel bei jeder Änderung neu zu berechnen.


Häufige Fehler und Lösungen

  • Fehlermeldung #WERT!:

    • Stelle sicher, dass die Funktion in einem Modul und nicht in einem Arbeitsblattmodul eingefügt wurde.
  • Seitenzahl aktualisiert sich nicht:

    • Verwende die Formel =Seite()+JETZT()*0, um die Funktion volatil zu machen.
  • Falsche Seitenzahl wird angezeigt:

    • Überprüfe, ob die Funktion ActiveCell im Code verwendet wird. Ersetze dies durch Application.Caller, um die richtige Zelle zu referenzieren.

Alternative Methoden

Falls du eine andere Methode zur Anzeige von Seitenzahlen in Excel verwenden möchtest, kannst du auch die Kopf- oder Fußzeilen verwenden:

  1. Gehe zu „Seitenlayout“ > „Drucken“:

    • Klicke auf „Kopfzeile“ oder „Fußzeile“.
  2. Füge die Seitenzahl hinzu:

    • Wähle „Seitennummer“ aus und füge sie in die Kopf- oder Fußzeile ein.

Diese Methode ist besonders nützlich, wenn du die Seitenzahlen automatisch für alle Seiten in einem Druckdokument einfügen möchtest.


Praktische Beispiele

  1. Seite 1 von 2:

    • Verwende die Formel =Seite(), um die aktuelle Seitenzahl und die Gesamtseitenanzahl in einer Zelle anzuzeigen.
  2. Seitenzahlen in Zellen:

    • Wenn du die Seitenzahl in einer Zelle einfügen möchtest, nutze die Formel =Seite(), um die Informationen direkt in die Arbeitsmappe zu integrieren.

Tipps für Profis

  • Volatilität erhöhen: Nutze Tricks wie JETZT()*0, um sicherzustellen, dass die Seitenzahlen bei Änderungen automatisch aktualisiert werden.

  • Kombinierte Formeln: Du kannst die Seitenzahl auch mit anderen Formeln kombinieren, um komplexe Berechnungen in einer einzigen Zelle anzuzeigen.

  • Formatierung: Stelle sicher, dass die Zelle, in der du die Seitenzahl anzeigst, entsprechend formatiert ist, um eine klare und ansprechende Darstellung zu erzielen.


FAQ: Häufige Fragen

1. Wie kann ich die Seitenzahl in einer bestimmten Zelle einfügen?
Verwende die Formel =Seite() in der gewünschten Zelle. Achte darauf, dass die Funktion korrekt implementiert ist.

2. Warum aktualisiert sich die Seitenzahl nicht automatisch?
Wenn du die Funktion nicht volatil machst, wird sie nicht bei jeder Änderung aktualisiert. Füge +JETZT()*0 hinzu, um dies zu beheben.

3. Kann ich die Seitenzahlen auch in Kopf- oder Fußzeilen einfügen?
Ja, gehe dazu zu „Seitenlayout“ und wähle „Kopfzeile“ oder „Fußzeile“, um die Seitenzahlen automatisch einzufügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige