Microsoft Excel

Herbers Excel/VBA-Archiv

Verarbeitung definierter Namen

Betrifft: Verarbeitung definierter Namen von: Kay Rösener
Geschrieben am: 06.11.2020 17:21:19

Hallo,


folgende Funktion funktiniert einwandfrei bei Aufruf DatafeederAuslesen1(Testbereich), wobei _

Testbereich ein defiierter Name ist



Public Function DatafeederAuslesen1(oRange1 As Range) As String
  DatafeederAuslesen1 = oRange1.Worksheet.Name & "!" & oRange1.Address
End Function


Was bitte mache ich aber bei folgender abgewandelter Funktion falsch, wenn ich wie folgt ü _

bergebe: DatafeederAuslesen2("Testbereich")


Public Function DatafeederAuslesen2(oName) As String
  Dim oRange2 As Range
  oRange2 = Range(oName)
  DatafeederAuslesen2 = oRange2.Worksheet.Name & "!" & oRange2.Address
End Function


Irgendwie sind jeweils die Objekte oRange1 und oRange2 unterschiedlich...


D&G

Kay

Betrifft: AW: Verarbeitung definierter Namen
von: Hajo_Zi
Geschrieben am: 06.11.2020 17:26:17

Hallo Kay,

ich würde vermuten
set oRange2 = Range(oName)
Warum das?

GrußformelHomepage

Betrifft: AW: Verarbeitung definierter Namen
von: Kay Rösener
Geschrieben am: 06.11.2020 17:36:22

Hallo Hajo,

nun gut, aber warum?
Wie weise ich denn einem Range Objekt auch ein Rage über einen definierten Namen zu?
Bei der ersten Funktion ist die Variable auch als Range definiert.

oRange2 = oName
funktioniert leider auch nicht.

Eine Idee?

VG Kay

Betrifft: AW: Verarbeitung definierter Namen
von: ralf_b
Geschrieben am: 06.11.2020 17:36:42

Hallo,

Einmal übergibst du ein Objekt und einmal einen String.
Wie Hajo schon geschrieben hat scheint da ein "Set" zu fehlen.
Und Wenn du ein Objekt übergibst, dann hat dieses Objekt alle Eigenschaften schon mitgebracht.
set oRange2 = Range(oName) erzeugt ein Objekt basierend auf dem aktuellen Worksheet. Ohne Eigenschaften von irgendwoher mitzubringen.

"Irgendwie anders" wäre interessant was du damit meinst.

Betrifft: AW: Verarbeitung definierter Namen
von: Kay Rösener
Geschrieben am: 06.11.2020 17:48:58

Hallo,
im ersten Aufruf übergebe ich einen Namen, der in eine definierte Range Variabel übergeht. Wenn ich dich richtig verstehe behandelt das Excel als Objekt.
Beim 2. Aufruf möchte ich das gleiche erreichen. Wie muß ich denn dann die Variable oRange2 setzen, damit ich zum gleichen Ergebnis komme, wie bei der ersten Funktion.
D&G Kay

Betrifft: AW: Verarbeitung definierter Namen
von: ralf_b
Geschrieben am: 06.11.2020 18:11:18

1. du übergibst ein Objekt des Typs Range. Das existiert schon und es wird eigentlich nur eine Referenz auf dieses Objekt übergeben. Objekte werden mit "Set oRange1 = "initialisert

2. du übergibst einen Text. "Testbereich" das ist kein Objekt, sondern nur irgendein Text. Das Objekt erzeugst du erst mit dem Range(oName) aber dafür fehlt ja das "Set". Und wenn der schon existiert könnte es zum Fehler kommen. Vermute ich. Solltest du existierende Bereichsnamen suchen,dann in der Names Auflistung z.b. ActiveWorkbook.Names die Addresse mit Worksheet geht

z.b. so ActiveWorkbook.Names("Testbereich").refersTo





Betrifft: AW: Verarbeitung definierter Namen
von: Kay Rösener
Geschrieben am: 06.11.2020 18:20:56

Super - hat nun funktioniert.
mit set oRange = Range(oName).
Aber auch dein Beispiel ist charmat.
Thanks Kay