![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() Registriert seit: 19.04.2001
Alter: 50
Beiträge: 165
|
![]() Hat von Euch vielleicht jemand schon mal versucht in Excel die (Zell-)Adressen der Seitenumbrüche auszulesen?
Ich habs versucht mit ActiveSheet.HPageBreaks(1 bis XXX).Location.Address. Da bekomme nur die Adresse des ersten Seitenumbruchs und das wars. Wenn ich mit ActiveSheet.HPageBreaks(2).Location.Address versuche den zweiten Seitenumbruch zu lokaliesieren bekomme ich als Ergebnis '', das war´s. Also entweder ich mach´s falsch, oder das funktioniert einfach nicht. Bitte und danke! grüße, dietz |
![]() |
![]() |
![]() |
#2 |
Jr. Member
![]() Registriert seit: 04.09.2001
Beiträge: 51
|
![]() Hab folgenden Makro getestet, zeigt alle Seitenumbrüche an?
mfg Sub MeineSeitenumbrueche() MsgBox ("Gefundene Umbrüche: " & ActiveSheet.HPageBreaks().Count) For i = 1 To ActiveSheet.HPageBreaks().Count MsgBox ("Umbruch " & i & ": " & ActiveSheet.HPageBreaks(i).Location.Address) Next End Sub |
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() Registriert seit: 19.04.2001
Alter: 50
Beiträge: 165
|
![]() Hallo canoma69!
Das funktioniert bei mir leider auch nicht. Ich bekomme die Anzahl der Zeilenumbrüche, und die Adresse des 1. zeilenumbruchs. Bei den weiteren Zeilenumbrüchen kommt nichts mehr, nur mehr ein Indexfehler. Trotzdem danke für deine Mühe. Falls das bei dir funktioniert, wäre interessant welche Version von Excel du hast. Ich habe Excekl 2000 (9.0.2812) grüße, dietz |
![]() |
![]() |
![]() |
#4 |
Jr. Member
![]() Registriert seit: 04.09.2001
Beiträge: 51
|
![]() Hallo Dietz,
bei mir funktioniert das Makro einwandfrei! Excel 2000 (9.0.3821 SR1) |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() Des ist interessant. Bei mir, Vers. 9.0.4402 SR1 funktionierts auch nicht (Indexfehler), so wie bei Dietz. Hm,... ???
|
![]() |
![]() |
![]() |
#6 |
Jr. Member
![]() Registriert seit: 04.09.2001
Beiträge: 51
|
![]() Hab's selbst noch mal getestet:
Neue Excel-Datei, 500 Zeilen Text, VBA-Editor geöffnet Makro eingefügt und direkt gestartet. Funktioniert prima. ![]() In die Tabelle gewechselt, Extras/Makro ausgeführt Funktioniert prima. ![]() In der Tabelle Schaltfläche erstellt, Makro ausgeführt Nix geht mehr ![]() Zurück in VBA-Editor, Makro gestartet, Index Fehler? ![]() Nach mehrmaligen Test's Fehler nicht reproduzierbar, manchmal gehts dann wieder nicht? |
![]() |
![]() |
![]() |
#7 | |
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() Zitat:
|
|
![]() |
![]() |
![]() |
#8 |
Master
![]() Registriert seit: 19.04.2000
Beiträge: 541
|
![]() Habe das Makro zwar noch nicht ausprobiert aber überlicherweise funktioniert das bei VBA grundsätzlich so:
Die Eigenschaft COUNT gibt immer die Anzahl der Einträge einer Auflistung wieder (in diesem Fall ist es die Auflistung der Zeilenumbrüche). Wobei aber der Index der einzelnen Werte immer bei "0" beginnt und bei "Count-1" endet. Daher müsste das Programm richtigerweise so lauten: For i = 0 To ActiveSheet.HPageBreaks().Count-1 MsgBox ("Umbruch " & i & ": " & ActiveSheet.HPageBreaks(i).Location.Address) Next i Wenn man aber bis zum Wert "COUNT" zählt bekommt man normalerweise einen Indexfehler, da man sich mit dem Index ausserhalb der Auflistung befindet. Warum das bei einigen PC´s trotzdem funktioniert hat, kann ich nicht sagen.... Microsoft´s Wege sind unergründlich ![]() |
![]() |
![]() |
![]() |
#9 | ||
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() @Shadow
Zitat:
z.b. bei HPageBreaks fängt Indizierung bei 1 an. Wennst mit 0 machst, kriegst sofort Indexfehler. Der 'seltsame' Punkt dabei ist, dass .Count die Anzahl richtig ausgibt, den 1. Eintrag auch auslesen kannst, aber ab dem 2. nicht mehr... ![]() Zitat:
![]() |
||
![]() |
![]() |
![]() |
#10 |
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() @Dietz
Workaround: PageBreak eigenschaft des Range-Objectes abfragen: Code:
Sub tryit() For i = 1 To 500 If ((Worksheets("Tabelle1").Rows(i).PageBreak = xlPageBreakAutomatic) Or (Worksheets("Tabelle1").Rows(i).PageBreak = xlPageBreakManual)) Then MsgBox ("found" + Str(i)) End If Next End Sub |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|