Hallo Experten,
wenn ich einen Bereich markiere und links oben, wo die Koordinaten angezeigt im Namensfeld werden, einen Namen hineinschreibe, ist dieser Bereich mit dem Namen verknüpft.
Was ich jetzt aber brauche, ist eine variable Verknüpfung dieser Zellen, konkret möchte ich, dass das Namensfeld in einer Spalte in der Zelle direkt unter der Überschrift (bei mir in Zeile 5) beginnt und bis zum letzten Eintrag in der Spalte reicht.
Ist das unter Excel möglich? Vielleicht auch unter Daten-Gültigkeit, aber ich habe es nicht hinbekommen.
Freundliche Grüße, Jerry
Du kannst den Namen per Makro jedesmal neu belegen…
dazu müsste man aber wissen wie sich das äussert, sprich wann soll der Bereich neu festgelegt werden…
Wie sich das dann aber verhält, wenn Du z.B. in einem Dropdown mit diesem Namen arbeitest weiss ich nicht…
gut möglich, dass das dann erst mal eine Fehlermeldung produziert…
VBA-Lösung
Was ich jetzt aber brauche, ist eine variable Verknüpfung
dieser Zellen, konkret möchte ich, dass das Namensfeld in
einer Spalte in der Zelle direkt unter der Überschrift (bei
mir in Zeile 5) beginnt und bis zum letzten Eintrag in der
Spalte reicht.
Hi Jerry,
Rechtsklick auf den Tabellennamen, CodeAnzeigen, Makro reinkopieren, Anpassungen durchführen, Editor schliessen.
Makro arbeitet automatisch.
Option Explicit
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim zei As Long
If Target.Column 4 Then Exit Sub ' Splate 4 = D wird überwacht, ggfs anpassen
zei = Range("a65536").End(xlUp).Row
ActiveWorkbook.Names("Bereich").Delete
ActiveWorkbook.Names.Add Name:="Bereich",RefersToR1C1:="=Tabelle1!R5C1:R" & zei & "C10" ' Zellen im BereichA5:Jx
End Sub
Gruß
Reinhard
hallo Jerry,
wenn ich einen Bereich markiere und links oben, wo die
Koordinaten angezeigt im Namensfeld werden, einen Namen
hineinschreibe, ist dieser Bereich mit dem Namen verknüpft.
Was ich jetzt aber brauche, ist eine variable Verknüpfung
dieser Zellen, konkret möchte ich, dass das Namensfeld in
einer Spalte in der Zelle direkt unter der Überschrift (bei
mir in Zeile 5) beginnt und bis zum letzten Eintrag in der
Spalte reicht.
Hier eine allgemeine Lösung für die automatische Anpassung der Bereiche von Namen, wenn Ergänzungen oder Löschungen vorgenommen werden. Der Bereich eines Namens wird überprüft und neu festgelegt, wenn unterhalb der 1. Reihe des Bereichs eine Änderung erfolgt. In meinem Beispiel werden 2 Bereiche überwacht.
Option Explicit
Dim zei As Long, zei1 As Long, Spalte As Long, NameBereich As String, BereichNeu As String
Private Sub Worksheet\_Change(ByVal Target As Range)
NameBereich = "Bereich1"
If Target.Row \> Range(NameBereich).Row And Target.Column \>= Range(NameBereich).Column And Target.Column Range(NameBereich).Row And Target.Column \>= Range(NameBereich).Column And Target.Column zei Then zei = zei1
Next Spalte
BereichNeu = "=" & ActiveSheet.Name & "!R" & Range(NameBereich).Row & "C" & Range(NameBereich).Column
BereichNeu = BereichNeu & ":R" & zei & "C" & Range(NameBereich).Column + Range(NameBereich).Columns.Count - 1
ActiveWorkbook.Names.Add Name:=NameBereich, RefersToR1C1:=BereichNeu
End Sub
Gruß
Franz
Namen variabel definieren - VBA übersichtlicher
Hallöchen,
Ich habe meinen VBA-Lösungsvorschlag durch Verwendung von Variablen etwas übersichtlicher gestaltet und die Berechnung des Neuen Bereiches eleganter gelöst.
Option Explicit
Dim Letzte As Long, zei1 As Long, Spalte As Long, NameBereich As String, BereichNeu As String
Dim Zeile1 As Long, SpLinks As Long, Breite As Long, Hoehe As Long
Private Sub Worksheet\_Change(ByVal Target As Range)
NameBereich = "Bereich1"
If Target.Row \>= Range(NameBereich).Row And Target.Column \>= Range(NameBereich).Column \_
And Target.Column = Range(NameBereich).Row And Target.Column \>= Range(NameBereich).Column \_
And Target.Column Letzte Then Letzte = zei1
Next Spalte
BereichNeu = "=" & ActiveSheet.Name & "!"
BereichNeu = BereichNeu & Cells(Zeile1, SpLinks).Address & ":"
BereichNeu = BereichNeu & Cells(Letzte, SpLinks + Breite - 1).Address
ActiveWorkbook.Names.Add Name:=NameBereich, RefersTo:=BereichNeu
ActiveCell.Offset(1, 0).Select
End Sub
Gruß
Franz
1 „Gefällt mir“