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

Dynamische Generierung von Bereichsnamen

Dynamische Generierung von Bereichsnamen
23.10.2015 15:06:30
Bereichsnamen
Hallo liebe Community,
ich habe mal wieder ein Problem mit meinem derzeitigen Projekt.
Ich möchte in meinem Projekt dynamisch Bereichsnamen in einzelnen erstellten Tabellenblättern vergeben.
Zu erst wird ein Tabellenblatt auf Basis einer Vorlage generiert, in dieses Soll der User nun über ein UserForm diverse Bereiche definieren und diesen Namen geben können.
Nun habe schon einwenig herumgebastelt und es geschafft das Excel die Bereichsnamen im Namenseditor anzeigt (siehe. Anhang https://www.herber.de/bbs/user/100998.zip ).
Das Problem an der Ganze Geschichte, ist leider das er die angegeben Ranges nicht übernimmt, egal was ich auch tue. Wenn ich die einzelnen Aktionen ausführe bekomme ich keine Fehlermeldung und die Bereichsnamen werden, wie bereits erwähnt im Namensmanager angezeigt.
Hier mal mein bereits geschriebener Code zu diesem Teil:
(Ich habe schon so lange auf diesen Code geschaut als das ich ggfs. schlampige Fehler übersehen habe, nehmt mir dies bitte nicht übel :p)
'#########################################################
Dim WkSh_Q As Worksheet ' das Quell-Tabellenblatt - die Herkunft der Daten
Dim lZeile As Long
Dim Bereich As String
Dim RRange As Range
Set WkSh_Q = ThisWorkbook.Worksheets("Untergruppen_Neu")
lZeile = 2
Do ' Schleifen-Anfang
RangeB = WkSh_Q.Range("A" & lZeile).Value ' Zuweisung des jeweils eingetragenen wertes
Bereich = Worksheets(NameTabellenblattneu + "_Werte").Name & RangeB
Worksheets(NameTabellenblattneu + "_Werte").Names.Add Name:=NameBereich, _
RefersTo:="=" & Bereich
lZeile = lZeile + 1 ' Zeilen-Variable um 1 erhöhen
Loop Until Cells(lZeile, 1) = "" ' Schleife verlassen wenn nächste Zelle leer ist.
'#######################################################
End Sub
Vielleicht könnt Ihr mir ja dabei helfen :)
Im Anhang befinden sich einige Screenshots ;)
https://www.herber.de/bbs/user/100998.zip
Vielen Dank und viele Grüße
Kulle

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

Betreff
Datum
Anwender
Anzeige
Lokale oder globale Bereichsnamen?
23.10.2015 19:35:40
Jürgen
Hallo Kulle,
wenn die Bereichsnamen im Namensmanager auftauchen, sind sie auch definiert. Ich vermute, dass Du nicht beachtet hast, dass Du die Bereichsnamen blatt- und nicht dateibezogen definiert hast. Wenn Du die Bereichsnamen von anderen Blättern aus verwenden möchtest, musst Du den Blattnamen voranstellen, auf denen sie definiert sind.
Gruß, Jürgen

AW: Lokale oder globale Bereichsnamen?
26.10.2015 08:20:09
Kulle
Guten Morgen Jürgen,
vielen Dank für deine Antwort. Die Bereichsnamen werden im Namensmanager aufgelistet, das ist grundlegend richtig. Leider wird aber die Range, welche den einzelnen Namen zugeordnet worden ist nicht korrekt übernommen (siehe. Screens aus dem ersten Post). Zusätzlich habe ich nun festgestellt, das ich durch auswählen einer Spalte und öffnen des Namenseditor + auswählen des neu eingetragenen Bereichsnamen, diesen in seiner Range verändern kann. Das Prinzip dieser automatisch stattfindenden Veränderung kann ich in keiner Art und Weise nachvollziehen.
Ich übergebe fest eingetragene Werte, der Name tauch im Manger auf, aber die Range stimmt einfach nicht und verändert sich.
Das sind schon wieder viel zu viele Anomalien :D
Der Blattname wird bei weiterer Verwendung der Bereichsnamen vorausgestellt, doch leider funktioniert das einfügen bspw. von Text aus einer Tabelle in dem neu erzeugten Bereich nicht.
Ein kleines Beispiel:
' Hier soll der Bereich aus Tabelle zwei mit dem Namen AusfüllenTest kopiert werden und in den neu erzeugten Bereich Kaffe, der Tabelle Dallmayr_Werte eingefügt werden. Die Prozedur die im vorhinein den Bereichsnamen festlegt, geht sogar soweit, das ich das Workbook auswählen und dann das Tabellenblatt, also sollte es auch da keine Schwierigkeiten geben.
Führt man den Code nun aus wird keine Fehlermeldung übergeben und auch keine Werte übertragen (Die Variablen wurden deklariert :D, nicht das ihr denkt das die vergessen hätte :D).
Set CopyS = Sheets("Tabelle2").Range("AusfüllenTest")
Set PasteS = Sheets("Dallmayr_Werte").Range("Kaffee")
WerteS() = CopyS
PasteS = WerteS()
Vielen Dank und viele Grüße
Grüße
Kulle

Anzeige
AW: Lokale oder globale Bereichsnamen?
26.10.2015 16:15:25
matthias
Hallo Kulle,
ohne zu wirklich zu wissen was sich in den einzelnen Variablen hinterlegt ist, lässt sich natürlich mit dem Code-Schnipsel nicht viel anfangen bzw. nur mutmaßen...
Im Bild "2015-10-23 14_51_24-Applikationsübersicasdht-IUK-AE2.xlsm - Excel.png" aus deiner Zip-Datei lautet das RefersTo: "=Testblatt_WerteA7:Testblatt_Werte!A23".
Wenn man sie einen handgeschriebenen Bereich anschaut, wird schnell klar, dass dies so nicht funktionieren kann (und das nicht nur wegen dem fehlenden Ausrufezeichen vor A7). Das Schema lautet:
"=Tabellenblatt!Von:Bis", somit lautet dein Bereich "=Testblatt_Werte!A7:A23".
Das Ausrufezeichen lässt sich am leichtesten in dieser Zeile ergänzen:
Bereich = Worksheets(NameTabellenblattneu + "_Werte").Name & "!" & RangeB
lg Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige