Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Namen vergeben per VBA

Namen vergeben per VBA
22.01.2009 13:00:42
Peter
Hallo zusammen,
ich kämpfe mit einem Namens-Problem und stecke echt fest ...
In der WorkBook_Open-Routine vergebe ich mittels folgendem Code den Namen "MieterNamen"
Dim lngVonZeile As Long
Dim lngBisZeile As Long
lngVonZeile = 3
lngBisZeile = Worksheets("Stammdaten").Range("C1048576").End(xlUp).Row
ActiveWorkbook.Names.Add Name:="MieterNamen", RefersTo:="=Stammdaten!C$" & lngVonZeile & ":$C$" & lngBisZeile
Der wird auch erstellt.
Wenn ich nun in die Tabelle "Stammdaten" gehe und mir dort den Bereich anzeigen lassen will (durch Auswahl des Namens links oben neben der Bearbeitungszeile) dann erhalte ich je nachdem welche Zelle gerade aktiv ist einen anderen Bereich angezeigt. Die Zeilenmenge stimmt - die angezeigten Spalten sind jedoch absolut unterschiedlich. Wenn z.B. eine Zelle in Spalte A aktiv ist dann stimmt der angezeigte Bereich. Ist jedoch eine Zelle in Spalte C aktiv dann erstreckt sich der Bereich auf die richtigen Zeilen, jedoch auf die Spalten C bis E.
Und ich kann den Namen dann auch keiner Zelle durch den Menüpunkt "Datenüberprüfung" zuordnen.
Für jede Hilfe und Idee bin ich riesig dankbar.
Vielen Dank schon jetzt dafür und viele Grüße
Peter
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen vergeben per VBA
22.01.2009 13:08:00
Luschi
Hallo Peter,
du hast ein $-Zeichen vergessen:
"=Stammdaten!$C$"
Gruß von Luschi
aus klein-Paris
AW: Namen vergeben per VBA
22.01.2009 13:09:00
Peter
Hallo Luschi,
Du warst ein paar Sekunden schneller ...
Grüße aus der Wetterau nach Frankfurt :-)
Gruß
Peter
AW: Namen vergeben per VBA
22.01.2009 13:08:49
Peter
Nochmal Hallo
Ich hab' den Fehler gefunden ...
Nachdem ich in die Name-Vergabe-Zeile ein weiteres Dollarzeichen eingefügt habe gings ... warum auch immer
ActiveWorkbook.Names.Add Name:="MieterNamen", RefersTo:="=Stammdaten!$C$" & lngVonZeile & ":$C$" & lngBisZeile
Danke an alle die schon drübergeschaut haben
Peter
Anzeige
AW: Namen vergeben per VBA
22.01.2009 13:10:00
Rudi
Hallo,
ich mach das immer so:
Sheets("Stammdaten").Range(Cells(lngVonZeile, 3), Cells(lngBisZeile, 3)).Name="MieterNamen"
Andererseits könntest du den Namen auch direkt dynamisch festlegen.
Name: MieterNamen, Bezug: =bereich.verschieben($C$3;;;Anzahl2($C$3:$C$1048576);)
Gruß
Rudi
Anzeige
AW: Namen vergeben per VBA
22.01.2009 13:12:00
Peter
Hallo Rudi,
Deine beiden Ansätze gefallen mir beide.
Besonders der Dynamische. Bislang hab' ich mich immer vor bereich.verschieben gedrückt.
Vielleicht sollte ich mir das doch mal zu Gemüte führen.
Vielen Dank für Deine Hilfe und Inspiration
Gruß
Peter
AW: Namen vergeben per VBA
22.01.2009 13:11:38
Tino
Hallo,
versuch es mal so.

Dim Bereich As Range
With Worksheets("Stammdaten")
Set Bereich = .Range("C3", .Range("C" & .Rows.Count).End(xlUp))
End With
On Error Resume Next
ActiveWorkbook.Names("MieterNamen").Delete
ActiveWorkbook.Names.Add "MieterNamen", "=Stammdaten!" & Bereich.Address(1, 1, xlR1C1)
On Error GoTo 0


Gruß Tino

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Namen in Excel per VBA vergeben: So funktioniert's


Schritt-für-Schritt-Anleitung

Um in Excel Bereichsnamen per VBA zu vergeben, kannst du den folgenden einfachen Code verwenden. Dieser Code zeigt, wie du den Namen "MieterNamen" für einen bestimmten Bereich in der Tabelle "Stammdaten" definierst.

Sub NamenVergaben()
    Dim lngVonZeile     As Long
    Dim lngBisZeile     As Long
    lngVonZeile = 3
    lngBisZeile = Worksheets("Stammdaten").Range("C1048576").End(xlUp).Row
    ActiveWorkbook.Names.Add Name:="MieterNamen", RefersTo:="=Stammdaten!$C$" & lngVonZeile & ":$C$" & lngBisZeile
End Sub

Führe diese Schritte aus:

  1. Öffne den Visual Basic for Applications (VBA) Editor (ALT + F11).
  2. Erstelle ein neues Modul.
  3. Füge den Code in das Modul ein.
  4. Schließe den Editor und führe das Makro aus.

Häufige Fehler und Lösungen

Ein häufiger Fehler beim Vergeben von Namen in Excel ist das Vergessen eines Dollarzeichens $. Wenn du das Dollarzeichen nicht korrekt verwendest, kann Excel den Bereich nicht richtig interpretieren.

Fehlerbehebung: Achte darauf, dass du die Referenz richtig schreibst:

ActiveWorkbook.Names.Add Name:="MieterNamen", RefersTo:="=Stammdaten!$C$" & lngVonZeile & ":$C$" & lngBisZeile

Wenn du versuchst, den Namen über die Datenüberprüfung zuzuordnen, stelle sicher, dass der Name korrekt erstellt wurde und keine Konflikte mit anderen Namen bestehen.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, um Excel Bereichsnamen zu vergeben. Eine Alternative ist die Verwendung der Range-Objekte:

Sheets("Stammdaten").Range(Cells(lngVonZeile, 3), Cells(lngBisZeile, 3)).Name = "MieterNamen"

Eine weitere Möglichkeit ist die Verwendung der Funktion Bereich.Verschieben, um den Namen dynamisch zu erstellen:

ActiveWorkbook.Names.Add Name:="MieterNamen", RefersTo:="=BEREICH.VERSCHIEBEN($C$3;;;ANZAHL2($C$3:$C$1048576);)"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Namen in Excel mit VBA vergeben kannst:

  1. Statischer Bereichsname:
ActiveWorkbook.Names.Add Name:="MieterNamen", RefersTo:="=Stammdaten!$C$3:$C$10"
  1. Dynamischer Bereichsname:
Dim Bereich As Range
With Worksheets("Stammdaten")
    Set Bereich = .Range("C3", .Range("C" & .Rows.Count).End(xlUp))
End With
ActiveWorkbook.Names.Add "MieterNamen", "=Stammdaten!" & Bereich.Address(1, 1, xlR1C1)

Diese Beispiele zeigen dir, wie du sowohl statische als auch dynamische Bereichsnamen in Excel vergeben kannst.


Tipps für Profis

  • Nutze On Error Resume Next, um Fehler beim Löschen bestehender Namen zu vermeiden. Dies kann hilfreich sein, wenn du sicherstellen möchtest, dass der Name immer neu vergeben wird.

  • Arbeite mit RefersTo und vba refersto, um komplexere Bezüge zu erstellen, die sich dynamisch anpassen.

  • Überprüfe regelmäßig deine vergebenen Namen, um sicherzustellen, dass keine Konflikte oder unnötigen Namen in deiner Arbeitsmappe existieren.


FAQ: Häufige Fragen

1. Wie kann ich einen bestehenden Namen in Excel löschen?
Du kannst einen bestehenden Namen mit folgendem Code löschen:

ActiveWorkbook.Names("MieterNamen").Delete

2. Warum wird mein Bereichsname nicht richtig angezeigt?
Überprüfe deine Formel auf korrekte Syntax und stelle sicher, dass alle Dollarzeichen $ an den richtigen Stellen gesetzt sind. Ein fehlendes Dollarzeichen kann dazu führen, dass Excel den Bereich falsch interpretiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige