WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 17.10.2002, 16:49   #1
dietz
Senior Member
 
Registriert seit: 19.04.2001
Alter: 50
Beiträge: 165


Standard VBA mit Excel 2000

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
dietz ist offline   Mit Zitat antworten
Alt 23.10.2002, 10:45   #2
canoma69
Jr. Member
 
Registriert seit: 04.09.2001
Beiträge: 51


Standard

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
canoma69 ist offline   Mit Zitat antworten
Alt 24.10.2002, 11:10   #3
dietz
Senior Member
 
Registriert seit: 19.04.2001
Alter: 50
Beiträge: 165


Standard

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
dietz ist offline   Mit Zitat antworten
Alt 24.10.2002, 16:43   #4
canoma69
Jr. Member
 
Registriert seit: 04.09.2001
Beiträge: 51


Standard

Hallo Dietz,

bei mir funktioniert das Makro einwandfrei!

Excel 2000 (9.0.3821 SR1)
canoma69 ist offline   Mit Zitat antworten
Alt 24.10.2002, 16:59   #5
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Standard

Des ist interessant. Bei mir, Vers. 9.0.4402 SR1 funktionierts auch nicht (Indexfehler), so wie bei Dietz. Hm,... ???
flinx ist offline   Mit Zitat antworten
Alt 25.10.2002, 12:07   #6
canoma69
Jr. Member
 
Registriert seit: 04.09.2001
Beiträge: 51


Standard

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?
canoma69 ist offline   Mit Zitat antworten
Alt 25.10.2002, 16:00   #7
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Standard

Zitat:
manchmal gehts dann wieder nicht?
Wird ja immer interessanter. Wenigstens gehts bei dir 'manchmal', bei mir noch nie...
flinx ist offline   Mit Zitat antworten
Alt 25.10.2002, 16:39   #8
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

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
Shadow ist offline   Mit Zitat antworten
Alt 25.10.2002, 17:33   #9
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Standard

@Shadow
Zitat:
immer bei "0" beginnt und bei "Count-1"
Stimmt IMHO nicht, hängt vom angesprochenen Objekt ab.

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:
Microsoft´s Wege sind unergründlich
da hast allerdings recht
flinx ist offline   Mit Zitat antworten
Alt 25.10.2002, 18:01   #10
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Idee

@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
Ist ja nicht das wahre, aber wenigstens funktionierts...
flinx ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:58 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag