Microsoft Excel

Herbers Excel/VBA-Archiv

Tabelle in den Names-Manager einlesen

Betrifft: Tabelle in den Names-Manager einlesen von: Lemmi
Geschrieben am: 15.09.2014 14:42:35

Hallo zusammen,

ich möchte aus einem Arbeitsblatt Bereichsnamen übertragen.
Ich dachte mir dass ich eine Tabelle im Arbeitsblatt Namens_Manager erstelle die alle Werte und alle Arbeitsfelder zu füllen erstelle.

Die erstellte Tabelle wird dann per Makro abgearbeitet und übertragen.

Kann das mit einem Makro durchgeführt werden?

Eine Beispieltabelle angefügt:
https://www.herber.de/bbs/user/92639.xlsx

Gruß
Lemmi

  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Beverly
Geschrieben am: 17.09.2014 09:14:13

Hi Lemmi,

theoretisch geht das schon zu machen, nur gibt es ein Problem bei den Formeln - diese müssen m.W. nach in der R1C1-Schreibweise zugewiesen werden.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Lemmi
Geschrieben am: 18.09.2014 13:58:12

Hallo Karin,

die Namen können ja eingelsen werden.
Menü,Formeln,Auswahl ... leider bekomme ich es nicht hin, dass " bezieht sich auf" Feld mit der Formel geüllt wird. Kann da nicht copy c und Copy V über VAB zugeordnet und abgesetzt werden.

...ist vieleicht nicht ganz so schön, aber könnte die Schreibweise R1C1-Schreibweise überflüssig machen!


Gruß
Lemmi


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Beverly
Geschrieben am: 18.09.2014 15:02:13

Hi Lemmi,

genau das geht eben nicht. Aber wenn du die Formeln in der englischen Schreibweise vorhältst, dann geht es auch ohne R1C1-Bezug

Sub NamenErstellen()
    Dim lngZeile As Long
    Dim strTab As String
    Dim strFormel As String
    Dim strName As String
    For lngZeile = 6 To 20
        strTab = Cells(lngZeile, 6)
        strFormel = "=" & Cells(lngZeile, 5)
        strName = Cells(lngZeile, 3)
        Worksheets(strTab).Names.Add Name:=strName, RefersTo:=strFormel
    Next lngZeile
End Sub
Ich würde aber an deiner Stelle anstelle von BEREICH.VERSCHIEBEN die Funktion INDEX verwenden:
Arbeitsblatt02!$I$8:INDEX(Arbeitsblatt02!$I$8:$I$500,COUNT(Arbeitsblatt02!$I$8:$I$500))

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Lemmi
Geschrieben am: 19.09.2014 17:06:49

Hallo Karin,

das hat alles gekappt! super!

Eine Frage dennnoch: Warum ist es besser mit "Index" zuarbeiten und nicht mit "Bereich.Verschieben"

Gruß
Lemmi


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Beverly
Geschrieben am: 19.09.2014 18:36:18

Hi Lemmi,

BEREICH.VERSCHIEBEN ist eine volatile Funktion. Das bedeutet, dass sie bei jeder (auch nicht mit dieser Funktion verbundenen) Neuberechnung trotzdem auch wieder neu berechnet wird, was natürlich die Performance wesentlich beeinträchtigt. Und genau das passiert bei INDEX nicht, da INDEX nicht zu den volatilen Funktionen gehört.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Lemmi
Geschrieben am: 19.09.2014 08:26:22

Hallo Karin,

das Makro bekomme ich leider nicht ans laufen!
Meldet immer Laufzeitfehler; Index außerhelb des Gültigen Bereichs!

Könntes Du dies mal in der Beispieldatei einbinden?

GRuß
Lemmi


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Beverly
Geschrieben am: 19.09.2014 08:42:09

Hi Lemmi,

dieser Fehler tritt auf, wenn es das Tabellenblatt nicht gibt, auf das sich deine Formel bezieht.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Lemmi
Geschrieben am: 19.09.2014 13:58:23

Hallo Karin,

d.h. Tabellenbalt: Arbeitsblatt02 erzeugen.
...habe ich gemacht!
...aber es klappt nicht!

Gruß
Lemmi


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Beverly
Geschrieben am: 19.09.2014 16:05:22

Hi Lemmi,

da hatte ich mich nicht 100% deutlich ausgedrückt - nicht nur das Tabellenblatt, auf das sich die Formel bezieht, muss vorhanden sein, sondern auch alle die Tabellenblätter, die in Spalte F stehen, denn sonst kann der Name ja nicht für dieses Tabellenblatt erstellt werden und das löst slbstverständlich einen Fehler aus.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Lemmi
Geschrieben am: 20.09.2014 18:43:52

Hallo Karin,

alles super!

Zwei Fragen habe ich denn noch!

Warum sollte man Index und nicht verschieben.bereich nutzen.

Wäre es möglich die feste Zeilenangabe in eine Angabe die Flexibel ist umzuwandel.
Also wenn zum Beispiel in Spalte A kein inhalt mehr ist soll auch nicht mehr eingelesen werden.
(For lngZeile = 6 To 20)


Gruß
Lemmi


  

Betrifft: AW: Tabelle in den Names-Manager einlesen von: Beverly
Geschrieben am: 20.09.2014 20:48:35

Hi Lemmi,

zu INDEX vs. BEREICH.VERSCHIEBEN hatte ich eigentlich schon einen Beitrag geschrieben - weiß nicht, weshalb der nicht angezeigt wird.

Also: BEREICH.VERSCHIEBEN ist eine volatile Funktionie, d.h. sie wird bei jeder Neuberechnung (gleichgültig ob sie direkt mit der Funktion zusammenhängt ist oder nicht) berechnet - das beeinträchtigt natürlich die Performance negativ. INDEX dagegen gehört nicht zu den volatilen Funktionen.

Die letzte belegte Zeile in einer Spalte kann man z.B. so ermitteln:

IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Dabei ist die 1 die Spaltennummer.


GrußformelBeverly's Excel - Inn


 

Beiträge aus den Excel-Beispielen zum Thema "Tabelle in den Names-Manager einlesen"