Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Excelnamen - Typen erkennen

Forumthread: Excelnamen - Typen erkennen

Excelnamen - Typen erkennen
20.05.2025 17:34:36
daniel
Hallo
im Prinzip gibt es ja vier verschiedene Typen von Excelnamen:

- fixe Zellbezüge
- berechnete Zellbezüge
- Werte
- berechnete Werte

gibt es in VBA eine elegante Möglichkeit, per Abfrage festzustellen, zu welchem Typ ein Name gehört?

Gruß daniel
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excelnamen - Typen erkennen
20.05.2025 17:40:53
Yal
Hallo Daniel,

könntest Du den Kandidaten mit je einem Beispiel belegen? Ich kann gerade nicht genau nachvollziehen, wie es gemeint ist.

VG
Yal
AW: Excelnamen - Typen erkennen
21.05.2025 14:46:38
Piet
Hallo Daniel

ich wußte gar nicht das man in Wb-Namen auch Formeln und Berechnungen einsetzen kann.
Werte dich einfach mit SelectCase oder IF Then -Name.RefersTo- als Variable aus, indem mit Instr(Txt.":") oder Instr(Txt,"*") usw. prüfst ob ein Formelzeichen oder ein Mathe Zeichen vorliegt. Das dürfte am einfachsten sein.
Ich weiß nicht, ob du damit alle 4 Varianten abgedeckt bekommst, habs nie getestet.

mfg Piet
Anzeige
AW: Excelnamen - Typen erkennen
21.05.2025 17:03:11
Onur
"im Prinzip gibt es ja vier verschiedene Typen von Excelnamen" ??
Was sind denn bitteschön "Excelnamen" ?
AW: Excelnamen - Typen erkennen
22.05.2025 22:43:57
xlKing
Hallo an alle hier im Forum,

ich werde hiermit vom stillen Mitleser zum gelegentlich aktiven Nutzer. Hoffe ich kann euch auch hier mit der einen oder anderen Idee bei der Lösungsfindung unterstützen. Gleichwohl konnte selbst ich dank des kompetenten Fachwissens der hiesigen Helfer auch schon einiges dazulernen.

Hallo Daniel,

zumindest kannst du unterscheiden, ob der Name nun einen Range zurückgibt oder einen Wert. Das ist doch schon mal etwas. Dazu musst du nur die Formeln mit Evaluate auswerten.

For Each n In ActiveWorkbook.Names

x = TypeName(Evaluate(n.RefersTo))
If x = "Range" Then
Debug.Print Evaluate(n.RefersTo).Address
ElseIf x = "Double" Then
Debug.Print Evaluate(n.RefersTo)
End If
Next n


Gruß Mr. K.
Anzeige
AW: Excelnamen - Typen erkennen
22.05.2025 23:38:17
daniel
Gute Idee, Danke.

Ob eine Range dann fix oder berechnet ist, sollte sich leicht aus der Formel ableiten lassen, die Formel für einen Berechneten Zellbezug wird, da sie Funktionen verwendet, immer eine Klammer enthalten und ein fest eingegebener Zellbezug nicht. Das kann man prüfen.

Anzeige
AW: Excelnamen - Typen erkennen
21.05.2025 17:30:08
daniel
Namen in Excel
AW: Excelnamen - Typen erkennen
21.05.2025 17:41:27
Onur
Das sind doch Bereichsnamen, dachte ich...
AW: Excelnamen - Typen erkennen
21.05.2025 18:42:45
daniel
so kann man sie auch nennen.
aber Namen können nicht nur Bereiche repräsentieren, sondern auch Werte.
Anzeige
AW: Excelnamen - Typen erkennen
21.05.2025 15:42:55
daniel
Hi Piet
danke für die Antwort, aber das wäre ja das bereits von Yal angesprochene parsen.
kann man machen, wird aber aufwendig, wenn man es lückenlos für alle möglichen Fälle machen will.
Gruß Daniel
AW: Excelnamen - Typen erkennen
20.05.2025 18:13:11
daniel
Hi
der Unterschied ist die Formel bei "Bezieht sich auf"

- fixer Zellbezug: =Tabelle1!$A$1

- berechneter Zellebezug: =Tabelle1!$A$1:INDEX(Tabelle1!$A:$A;ANZAHL2(Tabelle1!$A:$A))

- Wert: =0,19

- berechneter Wert: =Tabelle1!$A$1*0,19

funktionale Unterschiede in VBA wären, dass ich den Zellbereich eines Fixen Zellbezugs über
ActiveWorkbook.Names("xxx").RefersToRange
referenzieren kann, für einen berechneten Zellbezug funktioniert diese Methode nicht.
da muss man dann über Range("xxx") gehen, was aber wieder andere Probleme mit sich bringen kann, wenn mit mehreren Tabellenblättern oder Mappen gearbeitet wird.

und auch bei Namen, die Werte repräsentieren würde ja ein .RefersToRange fehlschlagen.

wenn man jetzt eine Schleife über alle alle Namen der Mappe macht (For each x in Thisworkbook.Names) und einen Teil davon bearbeiten will, wäre es schon hilfreich, diese Typen erkennen zu können, um Fehlerabbrüche zu vermeiden.

Gruß Daniel



Anzeige
AW: Excelnamen - Typen erkennen
20.05.2025 19:23:48
Yal
Hmm...

die Eigenschaft "RefersToRange" gehört zum Objekt "Name", das wiederum im Auflistung "Names" gesammelt wird. Es bezieht sich nur auf den benannten Bereiche.

Eine normale Zelle, die eine Adresse auf eine andere Zelle in der Formel beinhaltet, kann zuerst als Formel erkannt werden. Bringt aber wenig weiter. Dann gibt es die Vorgänger und Nachfolger, die man im Menü "Formel" als "Spur zu Vorgänger" oder "Spur zu Nachfolger". Es ist mir aber nie richtig gelungen, trotz Petzerei durch den Makrorekorder, auf diesen Objekte stabil zu zugreifen.

Es gibt auch die Verknüpfung, spricht wenn eine oder mehrere Zellen auf einer Zelle in einer anderen Mappe verweisen. Da kann man die Quellmappe anpassen und alle entsprechende Formeln werden angepasst. Diese Vorgehensweise könnte man mit dem MR abfangen und schauen, welche Objekt angesprochen werden.

Wenn man anschliessend die 4 oben benannten Typen auseinander halten möchte, wird es knifflig. Man könnte die gesamte Formel parsen, ist aber keine einfache Sache. Ich habe sehr lange an einem Parsen gebastelt und dann aufgegeben (inkl. Einarbeitung in ANTLR!). Es ist mir nicht bekannt, dass Excel auf dem eigenen, internen Parser einen Zugang zulässt.

Daher kann ich leider nicht mehr als ein paar Ideen liefern, aber keine implementierbare Lösung.
Ich setze den Flag auf "offen". Rot zieht die Aufmerksamkeit auf.

VG
Yal


Anzeige
AW: Excelnamen - Typen erkennen
20.05.2025 21:27:17
Marc
Mich erschließt sich gerade nicht ganz,

wo du das brauchst?.

Wenn du programmierst, siehst du doch ob du ein eine Fixe Adresse, eine errechnte Zelle etc. ansprichst ?

Ansonsten würde mir grad spontan nur einfallen,
das der Zellenbezug als String gespeichert übergeben wird

und dann geprüft
z.B. enthält er 1 oder 2 $ --> dann fixer Bezug..
etc..


Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18