27.09.2017, 12:39
Servus Community,
ich versuche eine Formel zu finden,
die mir ausgibt, in welchen Namensbezügen der untersuchte Range beinhaltet ist.
In den Boardmitteln habe ich nichts passendes gefunden und deshalb versucht, einen
Eigenbau zu kreieren.
So soll die Formel auf dem Excelblatt funktionieren:
=Bereich_in_Name(Adresse;Zahl)
Leider komme ich mit diesem Ansatz
noch nicht ans gewünschte Ziel.
Ich erhalte dabei immer eine Auflistung aller Namen der Mappe,
statt nur derjenigen, die einen Schnittbereich mit meinem gewählten Bezug haben.
Kann mir hier jemand weiterhelfen?
Hier habe ich die Beispieldatei, in der ich versucht habe, das ganze abzubilden:
LB1972_20170927_Prüfung_in_Namen_beinhaltet.xlsm (Größe: 19,09 KB / Downloads: 3)
Falls es eine einfachere Lösung hierzu gibt, z.B. einen boardmittelbasierten Formelansatz,
bin ich natürlich auch um diesbezügliche Hinweise dankbar.
(es muss ja nicht immer VBA sein...)
Vielen Dank schon mal für die Unterstützung.
Gruß
Ludwig
ich versuche eine Formel zu finden,
die mir ausgibt, in welchen Namensbezügen der untersuchte Range beinhaltet ist.
In den Boardmitteln habe ich nichts passendes gefunden und deshalb versucht, einen
Eigenbau zu kreieren.
So soll die Formel auf dem Excelblatt funktionieren:
=Bereich_in_Name(Adresse;Zahl)
- Bereich_in_Name [=Formelname]
- Adresse [= Bezug]
- Zahl [ = 1. Name, in dem der Bezug beinhaltet ist / 2. Name, in dem der Bezug beinhaltet ist.......]
Leider komme ich mit diesem Ansatz
Code:
Public Function Bereich_in_Name(Bereich As Range, i As Integer) As String
'Verschiedene Variablen
Dim objSD As Object 'Scripting-Objekt zum Listen der beinhalteten Namen
Dim k As Integer ' Zähler für Listing
Dim c As Range ' Range-Variable zur Bildug des Schnittbereichs
Dim nam As Name ' Namensvariable zum Schleifendurchlauf aller Namen
'Dictionary erzeugen
Set objSD = CreateObject("scripting.dictionary")
k = 0
Set c = Nothing
On Error Resume Next 'Fehler ignorieren für nicht existiernde Schnittbereiche
For Each nam In ActiveWorkbook.Names 'Schleife alle Namen durchlaufen
Set c = Application.Intersect(Bereich, Range(nam)) 'Schnittbereich bilden
If c = Bereich Then 'Wenn Schnittbereich dem Auswertebereich entspricht
k = k + 1 'Indexzähler um 1 erhöhen
objSD(k) = nam.Name 'Listeneintrag zum Index Name des ermittelten Namensbereichs
End If
Set c = Nothing 'Rangevariable leeren
Next
On Error GoTo 0 'Fehlerignorierung rücksetzen
Bereich_in_Name = objSD(i) 'Ausgabe des i-ten Objektes aus dem Listing
End Function
noch nicht ans gewünschte Ziel.
Ich erhalte dabei immer eine Auflistung aller Namen der Mappe,
statt nur derjenigen, die einen Schnittbereich mit meinem gewählten Bezug haben.
Kann mir hier jemand weiterhelfen?
Hier habe ich die Beispieldatei, in der ich versucht habe, das ganze abzubilden:

Falls es eine einfachere Lösung hierzu gibt, z.B. einen boardmittelbasierten Formelansatz,
bin ich natürlich auch um diesbezügliche Hinweise dankbar.
(es muss ja nicht immer VBA sein...)
Vielen Dank schon mal für die Unterstützung.
Gruß
Ludwig