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

Bereichsnamen prüfen

Bereichsnamen prüfen
19.02.2021 10:50:06
Kay
Hallo,
ich nutze bis zu 200 Bereichsnamen pro Sheet für Zellen und Bereiche, um diese mit Werte zu befüllen.
Klappt soweit hervorragend.
Nur wenn eines dieser Namen im Sheet nicht vorhanden ist, dann gibt es einen Fehler. Auch das ist nachzuvollziehen.
Ich möchte nun gerne diesen Fehler abfangen bzw. nur mit Werte befüllen, wenn der jeweilige Name auch vorhanden ist.
Ich habe Routine gefunden, die alle Bereichsnamen eines Sheets auf die Vorkommnisse eines Namen in einer Schleife durchlaufen :-(. Bei über 200 Namen, die ich so testen müsste, wäre dieses Vorgehen sicher nicht performant.
Gibt es in VBA nicht eine Funktion, die das Vorhandensein eines Namen/Bereichs prüft?
Oder würde man eine Funktion schreiben (Übergabe Sheet und Name des Bereichs), bei der die Fehlerbehandlung auf "resume next" gesetzt ist und diese dann bei Nichtvorhandensein des Namens zwar einen Fehler hat, diesen aber ignoriert und statt dessen als Rückgabe einen Status "Nicht vorhanden" bringt.
Vielleicht hat jemand ja eine Idee, ob es so etwas schon gibt.
D&G
Kay

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereichsnamen prüfen
19.02.2021 11:06:00
ChrisL
Hi Kay
Scheint mir etwas speziell, dass du so viele Namen verwendest. Vielleicht müsste man beim Grundsatz ansetzen.
Wahrscheinlich würde ich es wie von dir beschrieben auf einen Fehler laufen lassen. Etwas sauberer wäre vermutlich die folgende Variante:
Sub t()
MsgBox CheckName("MyName")
End Sub

Function CheckName(strName As String) As Boolean
Dim n As Name
For Each n In ThisWorkbook.Names
If n.Name = strName Then
CheckName = True
Exit Function
End If
Next n
End Function

cu
Chris
Anzeige
AW: Bereichsnamen prüfen
19.02.2021 11:11:46
Kay
Hi Chris,
genau das wollte ich ja nicht. Somit prüfe ich ja ständig auf alle Namen, ob dieser bereits existiert.
ich denke, dass das Abfangen eines bewusst erzeugten Fehlers schneller geht, als bei 200 Namen jeweils diese zu prüfen auf die vielleicht 199 gesetzten, um den einen zu finden, der nicht gesetzt ist.
Aber ich prüfe mal die Performance, wäre ja ggfs. eine Alternative.
Danke Kay
AW: Bereichsnamen prüfen
19.02.2021 12:49:54
ChrisL
Hi Kay
Eine fertige Standardfunktion gibt es m.W. nicht.
Mag sein, dass On-Error schneller wäre, aber ich denke einen grossen Unterschied macht es nicht. Aus meiner Sicht ist On-Error in der vorliegenden Situation aber durchaus eine valable Option, obwohl aus einer theoretischen Betrachtung heraus der vorgeschlagene Schnipsel zu bevorzugen wäre (Error-Handling wäre echten Fehlersituationen vorbehalten).
Wie bereits angetönt sollte für eine möglichst perfekte Lösung eher der Prozess generell hinterfragt werden d.h. warum die vielen Namen und wieso sind dir die Existenz der Namen unbekannt (viele Namen deutet darauf hin, dass du diese maschinell erzeugst, dann wären die Namen bekannt).
cu
Chris
Anzeige
AW: Bereichsnamen prüfen
19.02.2021 13:03:12
Kay
Hallo Chris,
danke der Nachfrage. Aber das Design ist in sich genial. Ich baue somit riesige Excel Templates, um Werte aus Abfragen an die richtigen Positionen zu setzen.
Auf der einen Seite sage ich z.B., das Feld4711 einen bestimmten Wert aus einer Abfrage erhalten soll. Dabei ist es egal, ob das Feld ein Bereich vieler Zeilen und Spalten ist. Nur wenn man im Template das Feld4711 nicht gesetzt hat, obwohl es laut Konfiguration beschrieben werden soll, bekam ich die Fehlermeldung.
Also mit den Namen ist das bei Excel echt traumhaft - nur eben die Prüfung, ob vorhanden war bis dato nicht vorhanden.
Ich hab es jetzt mit der mit einer Public Function gelöst. Dabei prüfe ich gleich noch mehr als das vorhandensein...
Somit ist alles gut und auch sehr performant.
Dank und Gruß Kay
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige