Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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

Setzen von Seitenumbrüchen mit vba

Setzen von Seitenumbrüchen mit vba
16.04.2023 22:49:37
matthias

Folgende Zeilen (Zeile 6 und 8) erzeugen Laufzeitfehler Nr.9 / Index ausserhalb des gültigen Bereiches. Es gibt 7 HPageBreaks, die vorher auch per vba gesetzt wurden. Diese sehe ich auch in der Umbruchvorschau. Dabei ist nur der 1. HPageBreak in blauer "solid Line". Die anderen sind gestrichelt dargestellt. Die Fehlermeldung wird immer in Zeile 6 erzeugt, allerdings mit ist i nicht immer auf dem gleichen Wert. Ich finde den Fehler einfach nicht. Könnt Ihr mir hier weiterhelfen?

For i = 1 To 7
Set logo = ActiveSheet.Shapes(shp)
logo.Copy
ActiveSheet.Paste
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Top = _
ActiveSheet.HPageBreaks(i).Location.Top + Application.CentimetersToPoints(Abstand_oben)
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Left = _
ActiveSheet.HPageBreaks(i).Location.Left + Application.CentimetersToPoints(Abstand_links)
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Height = Application.CentimetersToPoints(Höhe)
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Width = Application.CentimetersToPoints(breite)

Next i



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

Betreff
Datum
Anwender
Anzeige
AW: Setzen von Seitenumbrüchen mit vba
17.04.2023 00:14:09
ralf_b
Die Antwort ist einfach. Es gibt das Objekt, das mit diesem Index angesprochen wird, nicht.
Prüfe die Objekte mittels dem Überwachungsfenster.

sollte nur dein Schleifenzähler größer sein als die Anzahl der Pagebreakes, dann wäre das schon ein Ansatzpunkt.
Nutze als max. Schleifenanzahl die Count Eigenschaft.


AW: Setzen von Seitenumbrüchen mit vba
17.04.2023 12:33:37
Matthias
Hallo Ralph,
ich gehe mit dem Debugger durch die For to Next Schleife und komme manchmal auch fehlerfrei durch - manchmal aber eben auch nicht. Ich interpretiere das so, dass die Logik des Codes erst einmal richtig zu sein scheint. Ich bin in der vba-Programmierung so neu, dass ich noch Schwierigkeien mit den Begrifflichkeiten habe. Welches Objekt meinst du genau, dass möglicherweise nicht existiert? Das Objekt HPageBreak(i)? Es gibt definitiv 7 HpageBreaks in dem Tabellenblatt, da bin ich mir recht sicher. Ich kann mir nur nicht erklären, warum nur der erste Seitenumbruch mit einer blauen "Solid Line" dargestellt wird und die anderen 6 nur gestrichelt. Sie werden alle mit der gleichen Methode erzeugt (auch per vba). Auch das Shape, das ich von einem Tabellenblatt in das andere kopieren möchte existiert. Es wird ja auch manchmal kopiert. Ich habe den Eindruck, dass dieser Fehler dann auftritt, wenn ich die Umbrauchvorschau nicht aktiviert habe, bin mir aber noch nicht sicher. Könnte das ein Hinweis für dich sein?


Anzeige
AW: Setzen von Seitenumbrüchen mit vba
17.04.2023 15:27:33
Daniel
HI
hast du das mit der Anzahl mal verfiziert?
also einfach mal ein Msgbox activesheet.hpagebreaks.count vor der schleife in den Code eingebaut?
die HPageBreaks führen ein gewisses Eigenleben, du kannst zwar selber welche einfügen, (durchgehende Linien), aber Excel fügt auch automatisch dort welche ein, wo es erforderlich ist (gestrichelte Linien). Wenn du selber einen Seitenwechsel einfügst, dann verschieben sich natürlich die nachfolgenden automatischen.
Auch passt sich die Anzahl der Seitenumbrüche an Inhalte im Blatt an.
Dh es ist hier schon sinnvoll, die Seitenumbrüche zu zählen.

und noch ein Tipp: du solltest die Zeile, in der der Fehler auftritt, fett markieren oder nochmal anzeigen.
da es keine Zeilennummern gibt, ist die Aussage "Fehler tritt in Zeile 6 auf", nicht eindeutig und kann verschieden interpretiert werden.

Gruß Daniel


Anzeige
AW: Setzen von Seitenumbrüchen mit vba
17.04.2023 17:06:05
Matthias
Hi Daniel,
danke für den Hinweis die fehlererzeugenden Zeilen fett zu markieren. Die Msgbox habe ich eingefügt und bekomme erst bei dem Wert i=2 die Fehlermeldung "Laufzeitfehler 9 / Index ausserhalb des gültigen Bereiches". Das ist interessanterweise auch der erste HPageBreak, der gestrichelt dargestellt wird. Der HPageBreak(1), hat den Fehler also NICHT erzeugt, wohl aber HPageBreak(2). Ich habe es jetzt noch einmal mit beiden Arbeitsmappenansichten "Normal" und "Umbruchvorschau" ausprobiert: Tatsächlich wird der Fehler NUR in "Normal" erzeugt! Erzeugt wurden die Seitenumbrüche mit einem Call auf ein anderes Makro:
For i = 1 To anz_Seiten - 1
    Seite(i).Select
    letzteZeile = Seite(i).Rows.Count
    letzteSpalte = Seite(i).Columns.Count
    Cells(letzteZeile + 1, letzteSpalte).Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
    Set ActiveSheet.HPageBreaks(i).Location = Cells(letzteZeile + 1, letzteSpalte) 'Seite(i)
Next i
Dieses Makro lief aber ebenfalls nur mit ActiveWindow.View = xlPageBreakPreview (vorher) und ActiveWindow.View = xlNormalView (nach der Schleife) richtig durch. Wie gesagt, schon dieses Makro hat für den 1. HPageBreak(1) eine blaue durchgezogene Linie erzeugt, alle anderen HPageBreaks(2...7) sind gestrichelt dargestellt. Ich bin mir jetzt ziemlich sicher, dass mit diesen gestrichelten HPageBreaks Probleme entstehen, wenn ich z.B. Shapes auf einem Blatt positionieren möchte. Das Einschalten der Umbruchvorschau empfinde ich deshalb nur als einen Workaround, von dem ich mir nicht sicher bin, wie lange er zuverlässig läuft. Für den Moment werde ich es dabei belassen, es sei den Du oder andere haben noch eine gute Idee. Jedenfalls vielen Dank an Ralph und Dich Daniel für Eure Hilfe! Gruß Matthias



Anzeige
AW: Setzen von Seitenumbrüchen mit vba
17.04.2023 17:04:11
ralf_b
wenn du diesen Eindruck hast, dann prüfe Diesen nach.
Ich glaube tatsächlich stehen Pagebreaks nur in einer bestimmten Ansicht zur Verfügung.
Daniel hat auch Diverses dazu informiert. Zusätzlich lies doch die Onlinehilfe aufmerksam durch.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige