Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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.

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

Anzeige
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

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.

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

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige