globales Range-Objekt
25.10.2006 14:15:32
Matthias
Range(Range("ZielAdresse").Value)
und lieferte den gewünschten Bereich zurück.
Seit ich aus der Mappe eine weitere Mappe öffne, werden derartige Codezeilen auch ausgeführt, während die Neue Mappe aktiv ist. Das führt zu Laufzeitfehlern, weil die benannten Bereiche nicht mehr gefunden werden (so weit ganz logisch)
Das Workbook-Objekt hat zwar keine Range-Eigenschaft, die benannten Bereiche können aber über die Names-Auflistung angesprochen werden:
ThisWorkbook.Names("Zieladresse").RefersToRange.Value
liefert jetzt den Adressstring unabhängig von der aktiven Mappe.
Den Adressbereich als Range-Objekt zurückzugeben (währen eine andere Mappe aktiv ist) ist mir aber nicht gelungen.
In der VBA-Hilfe steht, dass 'Range' ohne Objektbezeichner ein Shortcut für 'ActiveSheet.Range' sei. Dennoch gibt es einen Unterschied zwischen
Range("Tabelle1!B2:D20")
und
ActiveSheet.Range("Tabelle1!B2:D20")
Ersteres funktioniert auch, wenn 'Tabelle2' aktiv ist, im zweiten Fall wird der Laufzeitfehler 1004 ausgelöst (das gleiche ist auch bei benannten Bereichen der Fall, wenn sie nicht auf dem aktiven Blatt liegen)
Im Gegensatz zu den benannten Bereichen, für die es mit "Names" eine Zugriffsmöglichkeit auf Workbook-Ebene gibt, habe ich hier keine vergleichbare Lösung gefunden. Range ohne Objekt verhält sich zwar, als obe es dem Workbook gehörte, ist dort aber nicht definiert.
Ich sehe drei Umgehungsmöglichkeiten, die mich aber alle nicht ganz zufriedenstellen:
1) Verzicht auf die Angabe des Worksheets in der Adresse in der benannten Zelle und fest codierter Zugriff auf das Sheet mit 'Thisworkbook.Worksheets("Tabelle1").Range(ThisWorkbook.Names("Zieladresse").RefersToRange.Value)'
2) Laden der Zieladresse in eine Variable und Extraktion des Sheetnamens für die korrekte Indizierung des Worksheets
3) 'ThisWorkbook.Activate' und danach die ursprünglichen Zugriffe über das "nackte" 'Range'
Kennt jemand eine andere Lösung (oder die Ursache für dieses eigenartige Verhalten)?
Danke im Voraus
Matthias