Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bereichsnamen per vba auslesen

Bereichsnamen per vba auslesen
08.04.2009 12:21:12
Micha
Hallo,
hat jemand ne idee, wie ich per VBA den Bereichsnamen auslesen kann ?
Cells(i,j).Name etc. liefert mir immer nur Spalte/Zeile Werte aber nicht den Bereichsnamen.
Dazu wäre noch wichtig, wie ich diesem Namen weitere Zellen zuweisen kann.
Grüße Micha
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereichsnamen per vba auslesen
08.04.2009 12:33:42
Hajo_Zi
Hallo Micha,

Sub Name_ermitteln()
Dim nm As Name
For Each nm In ActiveWorkbook.Names
If Not Application.Intersect(ActiveCell, Range(nm.RefersToRange.Address)) Is Nothing Then
MsgBox nm.Name
Exit Sub
End If
Next
MsgBox "Aktive Zelle gehört zu keinem mit Namen versehenen Bereich"
End Sub


Von Martin Beck

Anzeige
AW: Bereichsnamen per vba auslesen
08.04.2009 13:17:55
Luschi
Hallo Hajo,
bei Deiner Lösungsvariante kommt es zum Laufzeitfehler, sobald in mehreren Tabellenblättern der gleichen Arbeitsmappe Namen definiert sind.
Application.Intersect kann nicht über verschiedene Tabellenblätter die Prüfung vornehmen.
Deshalb so:

Sub Name_ermitteln()
Dim nm As Name, rg As Range
For Each nm In ActiveWorkbook.Names
Set rg = nm.RefersToRange
If ActiveCell.Parent.Name = rg.Parent.Name Then
'aktive Zelle und der Name müssen sich im gleichen TB befinden
If Not Application.Intersect(ActiveCell, nm.RefersToRange) Is Nothing Then
MsgBox ActiveCell.Address & " befindet sich in folgendem Namensverbund: " & nm.Name
End If
Exit Sub
End If
Next
MsgBox "Aktive Zelle gehört zu keinem mit Namen versehenen Bereich"
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bereichsnamen in Excel per VBA auslesen


Schritt-für-Schritt-Anleitung

Um in Excel VBA definierte Namen auszulesen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne Excel und gehe zu den Entwicklertools. Falls du diese nicht siehst, aktiviere sie über die Excel-Optionen.
  2. Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu: Rechtsklick auf ein Projekt im Projektfenster > "Einfügen" > "Modul".
  4. Kopiere den folgenden Code in das Modul:
Sub Name_ermitteln()
    Dim nm As Name
    For Each nm In ActiveWorkbook.Names
        If Not Application.Intersect(ActiveCell, Range(nm.RefersToRange.Address)) Is Nothing Then
            MsgBox nm.Name
            Exit Sub
        End If
    Next
    MsgBox "Aktive Zelle gehört zu keinem mit Namen versehenen Bereich"
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu deinem Arbeitsblatt.
  2. Wähle eine Zelle aus, die innerhalb eines benannten Bereichs liegt, und führe das Makro aus.

Häufige Fehler und Lösungen

  • Laufzeitfehler bei mehreren Tabellenblättern: Wenn du den oben genannten Code verwendest und es zu einem Fehler kommt, liegt das möglicherweise daran, dass du Namen in verschiedenen Tabellenblättern definiert hast. In diesem Fall kannst du den folgenden angepassten Code verwenden:
Sub Name_ermitteln()
    Dim nm As Name, rg As Range
    For Each nm In ActiveWorkbook.Names
        Set rg = nm.RefersToRange
        If ActiveCell.Parent.Name = rg.Parent.Name Then
            If Not Application.Intersect(ActiveCell, nm.RefersToRange) Is Nothing Then
                MsgBox ActiveCell.Address & " befindet sich in folgendem Namensverbund: " & nm.Name
            End If
            Exit Sub
        End If
    Next
    MsgBox "Aktive Zelle gehört zu keinem mit Namen versehenen Bereich"
End Sub
  • Namen nicht gefunden: Stelle sicher, dass die aktive Zelle tatsächlich innerhalb eines benannten Bereichs liegt. Andernfalls wird die Meldung "Aktive Zelle gehört zu keinem mit Namen versehenen Bereich" angezeigt.

Alternative Methoden

Wenn du Excel VBA Bereichsnamen auslesen möchtest, gibt es auch andere Methoden:

  1. Verwendung von Formeln: Du kannst die Funktion NAMES in Excel verwenden, um alle definierten Namen anzuzeigen.
  2. Power Query: Mit Power Query kannst du auch Daten aus verschiedenen Tabellen zusammenführen und dabei die definierten Namen berücksichtigen.

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von VBA zur Ermittlung von Bereichsnamen:

  • Beispiel 1: Ermitteln des Namens eines benannten Bereichs, wenn die aktive Zelle in diesem Bereich liegt.
  • Beispiel 2: Anzeigen aller benannten Bereiche in einer Meldung:
Sub AlleNamenAnzeigen()
    Dim nm As Name
    Dim NamenListe As String
    For Each nm In ActiveWorkbook.Names
        NamenListe = NamenListe & nm.Name & vbCrLf
    Next
    MsgBox NamenListe
End Sub

Diese Beispiele zeigen, wie du mit VBA definierte Namen auslesen kannst und bieten dir eine Grundlage für komplexere Anwendungen.


Tipps für Profis

  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung in deine VBA-Subroutinen ein, um unvorhergesehene Fehler abzufangen.
  • Namen sortieren: Du kannst die Liste der Namen sortieren, bevor du sie anzeigst, um die Lesbarkeit zu verbessern.
  • Dokumentation: Halte deinen Code gut dokumentiert, damit du später leicht nachvollziehen kannst, wie du die Excel VBA Bereichsnamen ausgelesen hast.

FAQ: Häufige Fragen

1. Wie kann ich alle Namen in meiner Arbeitsmappe auflisten?
Verwende den AlleNamenAnzeigen Code, um alle definierten Namen in einem Meldungsfenster anzuzeigen.

2. Kann ich auch den Workbook-Namen auslesen?
Ja, du kannst den Workbook-Namen mit ActiveWorkbook.Name auslesen. Dies ist hilfreich, wenn du die Namen in Bezug auf das aktuelle Workbook verwenden möchtest.

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