![]() |
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 |
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 |
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 |
Hallo Dietz,
bei mir funktioniert das Makro einwandfrei! Excel 2000 (9.0.3821 SR1) |
Des ist interessant. Bei mir, Vers. 9.0.4402 SR1 funktionierts auch nicht (Indexfehler), so wie bei Dietz. Hm,... ???
|
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 :confused: Zurück in VBA-Editor, Makro gestartet, Index Fehler? :confused: Nach mehrmaligen Test's Fehler nicht reproduzierbar, manchmal gehts dann wieder nicht? |
Zitat:
|
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
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... :confused: Zitat:
|
@Dietz
Workaround: PageBreak eigenschaft des Range-Objectes abfragen: Code:
Sub tryit() |
@flinx
Hast Recht, diese Auflistung beginnt glatt bei 1 und nicht bei 0 (die spinnen echt, jetzt muss man schon wissen, welche Auflistung bei welchem Wert beginnt....). Aber aus der Microsoft Hilfe habe ich noch ein Beispiel gefunden, wie man es auch machen kann: For Each pb In Worksheets(1).HPageBreaks MsgBox pb.Location.Address Next Wobei man Horizontale und Vertikale Pagebreaks leicht verwechseln kann... wie ich festgestellt habe (der Begriff bezieht sich ja auf die Lage des Seitenumbruches und nicht wie ich dachte auf die Lage der umgebrochenen Seiten). |
Code:
For Each pb In Worksheets(1).HPageBreaks :lol: dafür hat jetzt des Makro von canoma69 erstmalig! bis zum 4. Index funktioniert, den 5. wollts nimmer... :roflmao: edit: Das ist absolut krank :eek: jetzt funktionieren auf einmal alle Makro-Versionen ohne! Fehler. :confused: |
Vielleicht habt ihr auch ein Problem mit den Verweisen (im VBA-Editor -> Extras -> Verweise)
Wenn da die falsche DLL-Datei drin ist bei "Visual Basic for Applications", dann spinnt alles. Das hatte ich auch schon mal in der Firma, wenn man z.B. das Programm "Voloview" zum Anzeigen von AutoCAD-Zeichnungen installiert hat, werden diese VBA-Verweise vermurkst. Ausserdem hatte ich schon folgendes Problem bei einem PC mit WindowsXP und Office2000 SR1: die Funktion "cdbl()" zum Konvertieren ins Double-Zahlenformat funktionierte sporadisch nicht, ohne irgendeinen erkennbaren Zusammenhang... ganz toll. Edit: Im Access ist mir schön öfters passiert, dass ich verkrampft an einem Fehler gescheitert bin, der unerklärlich schien. Als die dann Access beendet und neu gestartet hatte, war der unerklärliche Fehler weg und alles hat sich in Wohlgefallen aufgelöst :rolleyes: . |
@shadow
Funktionieren bei deiner Excel-Version beide Makros(for-next und for each-next) immer? Welche Version hast du? Verweise kann ich mir nicht vorstellen: Nichts geändert->Mappe geschlossen->Makros ausgeführt->geht nicht, Mappe geschlossen, geöffnet->Makros funktionieren teilweise, Mappe geschlossen, geöffnet->Makros funktionieren fehlerlos, Mappe geschlossen, geöffnet->nix geht. Total unreproduzierbar das ganze. :confused: |
Bei mir funktioniert es immer...
Habe Windows 98SE und OfficeXP (Office 2000 in der Firma). Du könntest noch versuchen den Befehl: Worksheets(1).Activate an den Anfang des Programms zu stellen, das hat bei mir schon mal bei einem unerklärlichen Fehler im Excel geholfen. |
Zitat:
Mit dem Hpagebreak-Object gebe ichs auf, keine Ahnung was da los ist, aber wenn wer eine Lösung weiss, bitte posten. Halt mich bis dahin an die Abfrage von der .Pagebreak-Eigenschaft (falls ichs überhaupt mal brauchen sollte :) ). |
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag