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

Zugriff auf benannte Bereiche / Formeln

Zugriff auf benannte Bereiche / Formeln
Jens
Liebes Forum,
ein (aus meiner Sicht) eigenartiges Excel/VBA-Verhalten bereitet mir Kopfzerbrechen - hoffe ihr könnt Licht in die Sache bringen. :-)
Es geht um ein größeres VBA-Projekt, das aus mehreren Arbeitsmappen besteht. In einer Mappe greife ich auf Ergebnisse einer anderen Mappe zu. Diese Ergebnisse befinden sich auf verschiedenen Blättern, und sind allesamt benannte Bereiche, und teilweise auch benannte Formeln und benannte Konstanten, die alle (!) Arbeitsmappen-weit definiert sind.
Ich möchte in der anderen Mappe per VBA auf die Ergebnisse zugreifen und dachte, das geht am einfachsten über das Names-Objekt. (Weil ich da i.Ggs. zum Range-Objekt nicht bei jedem einzelnen wissen muss, in welchem der Blätter es sich befindet.)
Ich greife daher in VBA etwa so auf die Bereiche zu:
Evaluate(Workbooks(oWbk).Names(sName).Value)
Jetzt zu meiner Frage:
Der Code hier oben klappt in den meisten Fällen wunderbar. Aber es gibt einen Fall, in dem das Ganze nicht funktioniert: nämlich wenn sName auf eine benannte Formel verweist, die eine UDF enthält.
In allen anderen Fällen funktioniert das Ganz wunderbar: nämlich wenn sName einen Verweis auf eine Zelle, eine Konstante, oder auch eine einfachere Formel enthält. Die einfachere Formel darf auch andere benannte Bereiche enthalten oder mathematische Operationen, aber eben keine UDF.
In der Arbeitsmappe selbst (nicht in VBA) funktioniert die benannte Formel ohne Probleme.
Habt ihr einen Vorschlag, wie das Ganze zu lösen ist? Ziel wäre es, den obigen Code auch für jene Namen sName zum Laufen zu bekommen, die auf benannte Formeln verweisen, die UDFs beinhalten.
Vielen Dank sagt
der Jens

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

Betreff
Benutzer
Anzeige
Es könnte ja sein, dass der Name, direkt im ...
19.05.2012 04:37:03
Luc:-?
…TabBlatt verwendet, auch nicht fktioniert, Jens,
was ein Hinweis auf eine Unverträglichkeit der UDF mit den xlMechanismen für die Berechnung benannter Fmln wäre. Aber davon unabhängig besteht auch die Möglichkeit, dass nur Evaluate nicht damit fertig wird, weil die UDF ggf auch schon ein Evaluate, Rekursionen o.ä. enthält. Außerdem könnte es auch an der Fml insgesamt liegen → sie ist viell zu komplex. Ich habe das auch schon erlebt, dass in solchen Fällen Evaluate versagt. Das kann auch ganz ohne UDF passieren, zB wenn ganze Datenfelder (mehrfach) manipuliert wdn sollen, ist also normal. Man muss sich dann halt 'ne andere Lösung einfallen lassen.
Morrn, Luc :-?
Anzeige
AW: Es könnte ja sein, dass der Name, direkt im ...
19.05.2012 22:41:26
Jens
Hallo,
danke für die Antwort!
Da gibt's ja eine Menge Gründe, warum das nicht gehen könnte... Macht ja nicht gerade viel Hoffnung... :-O
Einzige Möglichkeit, die ich bisher gefunden habe: in der einen Mappe die ganze Formel in eine Zelle schreiben, und der Name verweist dann einfach auf die Zelle. Verweis auf diesen Namen in der anderen Mappe funktioniert dann.
Nachteil dabei ist, dass ich die Mappe modifizieren muss, was nicht erwünscht ist (weil Teil eines größeren Projekts, Nachteile beim Deployment etc.).
Eine solche Aufgabenstellung müsste ja öfter auftreten. Wie würdet ihr das lösen? Bin für Vorschläge dankbar.
@Luc: Woran hast du denn konkret gedacht, wenn du schreibst: "Man muss sich dann halt 'ne andere Lösung einfallen lassen."?
Und gibt es im VBA-Code statt Evaluate eine bessere Möglichkeit?
Danke nochmal sagt
der Jens
Anzeige
Prinzipiell Nein, nur umständlichere, ...
20.05.2012 04:30:41
Luc:-?
…Jens,
aber alles hat halt seine Grenzen, wobei die Länge der benannten Fml in xlVss vor Xl12 auch noch 'ne Rolle spielt. Ansonsten sind UDF in benannten Fmln idR genauso einsetzbar wie StandardFktt, 's kommt halt auf das Prozedere an.
Wenn man dir Alternativen empfehlen wollte, könnte man so ins Blaue hinein nur sagen …
→ Auflösen in Einzelteile, was recht kompliziert wdn könnte, oder
→ die UDF separat berechnen und ihr Ergebnis verwenden. Ist das ein Datenfeld, wird's ebenfalls kompliziert, weil das mit Evaluate nur bearbeitet wdn kann, wenn es als Matrixkonstante in Textform vorliegt.
→ ggf statt dieser einen benannten Fml eine Berechnung der Fml nur mit VBA in Erwägung ziehen. Wenn es sich anbietet und fktt, könnten Einzelteile auch evaluiert wdn.
Gruß+schöSo, Luc :-?
Anzeige
AW: Prinzipiell Nein, nur umständlichere, ...
22.05.2012 14:14:57
Jens
Na gut, das klingt nach beschränkten Möglichkeiten.
Dann ist mein Lösungsansatz doch gar nicht so schlecht: in der einen Mappe die ganze Formel in eine Zelle schreiben, und der Name verweist dann einfach auf die Zelle. Verweis auf diesen Namen in der anderen Mappe funktioniert dann.
Liebe Grüße an alle
vom Jens
...Sicher! Gruß retour! owT
22.05.2012 18:53:33
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige