Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Namens-Eintrag mit mehreren Range-Objekten verarbeiten

Namens-Eintrag mit mehreren Range-Objekten verarbeiten
11.03.2024 16:17:46
Ben
Hallo,

in einer Arbeitsmappe existiert ein Namens-Eintrag mit mehreren Range-Objekten.
Wenn der Namens-Eintrag mit RefersToR1C1 konvertiert wird, kommt folgendes heraus:

=Tabelle1!R2C2:R7C2,Tabelle1!R2C4:R7C4,Tabelle1!R2C6:R7C6,Tabelle1!R2C8:R7C8,Tabelle1!R2C10:R7C10,Tabelle1!R2C12:R7C12,Tabelle1!R2C14:R7C14,Tabelle1!R2C16:R7C16,Tabelle1!R2C18:R7C18,Tabelle1!R2C20:R7C20,Tabelle1!R2C22:R7C22,Tabelle1!R2C24:R7C24

Ursprünglich sollte dieser Namens-Eintrag in ein Range-Objekt konvertiert werden:

Tabelle1.Names("Auswertungen").RefersToRange


Dieser Befehl funktioniert nicht, da "RefersToRange" nur mit einfachen Verweisen funktioniert.

Hat jemand eine Lösung, wie ein solcher Namens-Eintrag in ein Range-Objekt verarbeitet werden kann?

Zur Info:

Der Namens-Eintrag wurde mit einem Range-Objekt erstellt, in dem mit Union mehrere Bereiche zusammengefasst wurden. Dieses Verfahren hat problemlos funktioniert.
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namens-Eintrag mit mehreren Range-Objekten verarbeiten
11.03.2024 16:39:29
schauan
Hallöchen,

... Range("Auswertungen")
AW: Namens-Eintrag mit mehreren Range-Objekten verarbeiten
11.03.2024 16:47:14
Ben
Zwischenzeitlich wurde bereits eine zugegeben etwas umständliche Lösung gefunden, die funktionsfähig ist:

Function ConvertNameToRangeObject(sName As String) As Range


Dim parts() As String
parts = Split(Replace(Names(sName).RefersToR1C1, "=", ""), ",")

Dim newParts() As String
ReDim newParts(LBound(parts) To UBound(parts))

Dim i As Integer
For i = LBound(parts) To UBound(parts)
newParts(i) = Application.ConvertFormula(Formula:=parts(i), fromReferencestyle:=xlR1C1, toReferenceStyle:=xlA1)
Next i

Dim baseRange As Range
Set baseRange = Range(newParts(LBound(newParts)))

Dim j As Long
For i = LBound(newParts) + 1 To UBound(newParts)
Set baseRange = Application.Union(baseRange, ActiveSheet.Range(newParts(i)))
Next i

Set ConvertNameToRangeObject = baseRange
End Function


Die Lösung wurde zum Teil mit https://huggingface.co/chat generiert.
Anzeige
AW: Namens-Eintrag mit mehreren Range-Objekten verarbeiten
11.03.2024 18:52:56
Yal
Hallo Ben,

folgende Code sollte auch funktionieren. habe keine Datei zum Testen.

Function ConvertNameToRangeObject(sName As String) As Range

Dim Elt
Dim Rng As Range

For Each Elt In Split(Replace(Names(sName).RefersToR1C1, "=", ""), ",")
Elt = Application.ConvertFormula(Formula:=Elt, fromReferencestyle:=xlR1C1, toReferenceStyle:=xlA1)
If Rng Is Nothing Then
Set Rng = ActiveSheet.Range(Elt)
Else
Set Rng = Application.Union(Rng, Elt)
End If
Next
Set ConvertNameToRangeObject = Rng
End Function


VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige