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

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.

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige