Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1800to1804
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
Inhaltsverzeichnis

Seitenindex der Zelle

Seitenindex der Zelle
18.12.2020 11:58:05
JoNNy
Hallo zusammen,
aktuell bin ich dabei mit VBA dynamische Druckbereiche zu realisieren.
Dafür muss ich wissen auf welcher Seite sich eine Zelle bezüglich der PageBreaks befindet.
Also in etwa:
WB.WS.Range("A1").PageIndex
Gefunden habe ich nur Dinge über Application.Caller aber ohne Bezug auf eine bestimmte Zelle.
Gruß JoNNy

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seitenindex der Zelle
18.12.2020 13:08:20
Yal
Hallo JoNNy,
es fehlt ein nischen Kontext, um die Aufgabe einzugrenzen.
Wenn Du ein Application.Caller verwendest, dann gibt es ein Auslöser. Welche ist es?
Gehst Du in Schleife über alle Blätter?
For each WS in WB.Worksheets
Reicht eventuell den Verweis auf das aktive Blatt?
ActiveSheet.Index
VG
Yal
AW: Seitenindex der Zelle
18.12.2020 13:30:49
JoNNy
Hallo Yal,
im Grunde muss ich für jede Zeile prüfen, ob diese noch auf der vorherigen oder schon auf der nächsten Seite des automatischen PageBreaks ist.
Also:
For Each Row in WS.Rows
Next
Anhand dessen und anhand des Inhalts der Zellen muss ich dann den ManualPageBreak setzen.
Gruß JoNNy
Anzeige
AW: Seitenindex der Zelle
18.12.2020 13:58:11
Yal
Verstehe ich nur begrenzt: Du hast ein Pagebreak und Du willst ein ManualPageBreak setzen?
AW: Seitenindex der Zelle
18.12.2020 14:04:34
JoNNy
Ja der Pagebreak wird ja von Excel automatisch gesetzt.
Ich möchte diesen aber anpassen, um die immer unterschiedlichen Daten an der richtigen Stelle zu trennen.
Der Datenanfang soll nicht unnötigerweise noch auf der vorherigen Seite sein.
Also in etwa so:
Vorher:
Daten1
Daten1
Daten1
Daten1
Daten2
Automatischer PageBreak
Daten2
Nachher:
Daten1
Daten1
Daten1
Daten1
Manueller PageBreak
Daten2
Daten2
Gruß JoNNy
AW: Seitenindex der Zelle
18.12.2020 15:03:52
Yal
Hallo JoNNy,
bei VBA -oder Programmierung allgemein- geht es darum, Aufgabe zu automatisieren. Dafür gibt man den Rechner die Regeln, zu erfüllung der Aufgabe.
Zwar sehe ich, dass Du die PageBreak anders setzt als die automatisch vergebenen. Aber nach welchem Regel wird entschieden, wo diese ManualPageBreak zu setzen ist? Und warum ist es dabei entscheidend, zu wissen wo die aktuelle sind?
Computer sind in der Regel sehr schlecht in Gedanken lesen (ich auch anscheinend).
VG
Yal
Anzeige
AW: Seitenindex der Zelle
21.12.2020 08:37:50
JoNNy
Wie VBA funktioniert ist mir durchaus bewusst.
Mehr als das, was ich erklärt habe soll es nicht werden.
Datenblöcke nicht auseinander reißen.
Und die Automatischen muss ich kennen, um festzustellen, ob und an welcher Stelle ein Block geteilt wird.
AW: Seitenindex der Zelle
18.12.2020 14:43:57
JoNNy
Also was ich gerade gefunden habe:
WS.HPageBreaks(1).Location.Row
Der gibt mir die Adresse für den Index des Breaks zurück.
Bringt mir aber nur bedingt etwas.
So müsste ich dann für jede Zelle, bei der mich die Seite interessiert, durch die Breaks loopen.
Das ist auch etwas umständlich.
Anzeige
AW: Seitenindex der Zelle
18.12.2020 15:07:12
ralf_b
Was genau hast du denn überhaupt vor? Im Großen und Ganzen. Das es um Pagebreaks geht wissen wir nun. Das Thema an sich ist schwierig, da sich alles verschiebt wenn du nur eine Schriftgröße änderst.
Siehe: Antwort an Yal
21.12.2020 08:39:41
JoNNy
AW: Seitenindex der Zelle
21.12.2020 23:38:08
Tobias
Hi Jonny,
musst du nicht nur einfach durch deine Datenblöcke gehen und schauen ob HPageBreaks.Count nach dem Block ein größer ist und falls ja ein PageBreak vor deinen Block setzen? Keine Ahnung wie gut du deine Blöcke definieren kannst ... aber könnte ein Ansatz sein oder?4
Schöne Grüße
Tobias
AW: Seitenindex der Zelle
22.12.2020 08:16:10
JoNNy
Hi Tobias,
ja sowas in der Art. Die Frage ist, kann man den HPageBreaks.Count an einer bestimmten Stelle feststellen?
Die Datenblöcke sind auf eine Zelle genau definierbar, wäre also kein Problem.
Gruß JoNNy
Anzeige
AW: Seitenindex der Zelle
22.12.2020 10:20:17
Yal
Hallo JoNNy,
wenn Du in VBA den IntelliSense geschickt einsetzt (Strg+Leertaste, aber das weiß Du schon), kommst Du relativ schnell auf sowas (ich hatte null Ahnung von HPageBreak davor)
Sub Test()
Dim HP As HPageBreak
For Each HP In Me.HPageBreaks
Debug.Print HP.Location
Next
End Sub
Ich habe nur die Spalte A bis Zelle A160 mit irgendwas befüllt.
Das Coding ergibt 51, 101,151.
Wenn Du im Blatt auf Ansicht > Umbruchvorschau wechselst, siehst Du was diese Zahlen bedeuten. Aber das weiß Du auch.
Es war ein schwere Geburt, aber jetzt hast Du alles.
Mein Tipp: die richtige Antwort kommt nach der richtigen Frage. Du muss nicht dein ganzes Leben erzählen, aber wenn Du ein Bischen mehr über dein Ziel erzählst, können die Helfer besser aus eine unklare Fragestellung das richtiges herausfiltern.
Schöne Bescherung,
Yal
Anzeige
AW: Seitenindex der Zelle
22.12.2020 10:30:57
JoNNy
Hi Yal,
wie bereits erwähnt war ich so weit leider auch schon.
Eine direkte Abfrage auf die Seite, auf der eine Zelle liegt, wäre natürlich eleganter gewesen.
Aber dann muss es eben auf dem langen Weg gehen.
Das Ergebnis gebe ich durch, wenn ich fertig bin. ;)
Gruß JoNNy
AW: Seitenindex der Zelle
22.12.2020 12:27:12
Yal
Für jede Rückmeldung sind wir dankbar. Jedoch kein Grund die Frage offen zu lassen. Oder setzst Du den Warndreieck jedesmal Du das Auto parkst?
Wenn Du den Code in Schritt Modus laufen lässt und daneben das Lokalfenster offen hast, kannst Du sehen, welche Properties in dem Objekt welche Wert gerade haben. In dem Fall Me als Worksheet und HP als HPageBreak (in diese Art und Weise kann man sehr schnell sehr viel über Excel-Objektstruktur lernen).
HPageBreaks ist da ziemlichste "strait forward", das es gibt, um an den richtige Zellen zu kommen.
Ich stelle gerade fest, dass mein voriges Coding nur funktioniert, wenn man vorher den PageBreakPreview eingeschlatet hat (in dem Fall wieder sofort ausgeschaltet)
Sub Test()
Dim HP As HPageBreak
ActiveWindow.View = xlPageBreakPreview
ActiveWindow.View = xlNormalView
For Each HP In Me.HPageBreaks
Debug.Print HP.Location
Next
End Sub
VG Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige