Microsoft Excel

Herbers Excel/VBA-Archiv

Vba: refersToR1C1 Namen erzeugen


Betrifft: Vba: refersToR1C1 Namen erzeugen von: Christian
Geschrieben am: 01.10.2019 15:34:33

Grüßt euch,

Für meine Dropdownliste möchte ich per Vba einen Namen erstellen lassen.
Die Namen stehen im Tabellenblatt "Renditen" in Zeile A1. Die Überschriften erweitern sich regelmäßig, womit sich auch die Liste der Namen ständig vergrößert.

Nun habe ich mit dem Recorder den Code aufgenommen, für eine statische Namensliste von 5 Zellen funktioniert dieser auch.

Meine Frage nun, wie schreibe ich den dynamischen Zellbezug in den referToR1C1 Code.

Ich steig da noch nicht durch, als VBA Einsteiger.

Hier mein Code:

ActiveWorkbook.Names.Add name:="IndexNamen", RefersToR1C1:="=Renditen!R1C1:R1" & "C & letztespaltestart"

Besten Dank für eure Hilfe

Christian

  

Betrifft: AW: Vba: refersToR1C1 Namen erzeugen von: Daniel
Geschrieben am: 01.10.2019 15:48:32

Hi

Bitte genau überlegen

Welche Teile in deinem Code sind fester Text, der genau so verwendet werden soll, wie er da steht, und welcher Teil ist deine Variable, deren Inhalt verwendet werden muss.
Der feste Text muss in Anführungszeichen, die Variable darf nicht in Anführungszeichen stehen.

Verkettet werden die Teile mit dem &, welches natürlich auch nicht innerhalb der Anführungszeichen stehen darf, sondern außerhalb stehen muss.

Gruß Daniel


  

Betrifft: AW: Vba: refersToR1C1 Namen erzeugen von: Christian
Geschrieben am: 01.10.2019 15:54:09

Hi Daniel,

danke wiedermals für deine Hilfe.

ich habe es etwas einfacher gelöst.

Renditen.Range(Renditen.Cells(1, 2), Renditen.Cells(1, letzteSpalteStart)).name = "IndexNamen"

Mit dem Code funktioniert es auch wunderbar.
Kannst du mir ggf. ganz kur erläutern, worin der Unterschied in der refersToR1C1 Methode und Range.Name liegt?

Für mich ist die Range.Name deutlich umgänglicher und verständlicher.

Vielen Dank Christian


  

Betrifft: AW: Vba: refersToR1C1 Namen erzeugen von: fcs
Geschrieben am: 01.10.2019 15:51:02

Hallo Christian,

    Dim letztespaltestart As Long
    With ActiveWorkbook.Worksheets("Renditen")
        letztespaltestart = .Cells(1, .Columns.Count).End(xlToLeft).Column
    End With
    ActiveWorkbook.Names.Add Name:="IndexNamen", RefersToR1C1:="=Renditen!R1C1:R1C" &  _
letztespaltestart
LG
Franz


  

Betrifft: AW: Vba: refersToR1C1 Namen erzeugen von: Christian
Geschrieben am: 01.10.2019 15:56:01

Hallo Franz,

dank deiner und Daniels Hilfe habe ich nun die Syntax dahinter auch verstanden.
Besten Dank.

Ich habe es für mich einfacher "gelöst" mit folgendem Code

Renditen.Range(Renditen.Cells(1, 2), Renditen.Cells(1, letzteSpalteStart)).name = "IndexNamen"

Grüße Christian


  

Betrifft: gelöst, dann nicht mehr offen. o.w.T. von: Werner
Geschrieben am: 01.10.2019 16:03:39




  

Betrifft: Wenn du das Problem gelöst hast, warum setzt du von: Daniel
Geschrieben am: 01.10.2019 16:03:47

Die Frage dann noch auf offen?


Beiträge aus dem Excel-Forum zum Thema "Vba: refersToR1C1 Namen erzeugen"