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

Forumthread: Auslesen von Namen

Auslesen von Namen
12.07.2005 13:23:36
Namen
Hallo Zusammen,
ich suche eine Möglichkeit in Abhängigkeit von einem Zellbezug den Namen eines Zellbereiches (Range- Objekt) auszulesen und zwar sollte von jedem Zellbezug innerhalb dieses Bereiches der Name des Bereiches ermittelt werden können.
Hat jemand eine Idee, wie man das hinkriegen kann?
Gruß
Berthold
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auslesen von Namen
12.07.2005 14:11:29
Namen
x = Cells(1, 1).Name.Name
AW: Auslesen von Namen
12.07.2005 14:26:45
Namen
Hallo Claudia,
erst mal Danke für die Antwort
aber das scheint nicht zu funktionieren. Ich vermute das das Problem nicht klar genug ist.
Falls es doch fuktionieren sollte, brauche eine ausführlichere Erklärung.
Hier ein Beispiel was ich meine:
Der benannte Bereich geht von A1 bis C4, der Name ist Bereich01
Durch Doppelklick auf einer beliebigen Zelle innerhalb des Bereiches z.B. auf B3 will ich den Namen "Bereich01" erhalten.
Gruß
Berthold
Anzeige
AW: Auslesen von Namen
12.07.2005 14:26:55
Namen
Hallo Claudia,
erst mal Danke für die Antwort
aber das scheint nicht zu funktionieren. Ich vermute das das Problem nicht klar genug ist.
Falls es doch fuktionieren sollte, brauche eine ausführlichere Erklärung.
Hier ein Beispiel was ich meine:
Der benannte Bereich geht von A1 bis C4, der Name ist Bereich01
Durch Doppelklick auf einer beliebigen Zelle innerhalb des Bereiches z.B. auf B3 will ich den Namen "Bereich01" erhalten.
Gruß
Berthold
Anzeige
AW: Auslesen von Namen
12.07.2005 15:17:53
Namen
Hallo,

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim n As Name
For Each n In ActiveWorkbook.Names
If Not Intersect(Selection, Range(n.Name)) Is Nothing Then
MsgBox n.Name
Exit Sub
End If
Next
End Sub
Gruß
Geist ist geil!
Anzeige
AW: Auslesen von Namen
12.07.2005 15:25:17
Namen
An u_
ich kriege leider sofort eine Fehlermeldung in folgender Zeile:
If Not Intersect(Selection, Range(n.Name)) Is Nothing Then
mit der Bemerkung, die Methode range ist für dass Objekt _worksheet fehlgeschlagen
Gruß
Berthold
AW: Auslesen von Namen
12.07.2005 15:28:55
Namen
An u_
kann das Nichtfunktionieren damit Zusammenhängen, dass weitere Namen enthalten sind, die nur auf eine Zelle verweisen?
Wenn ja, wie filtert man die heraus?
Gruß Berthold
Anzeige
AW: Auslesen von Namen
12.07.2005 19:28:03
Namen
An U_
vielen Dank für den Tip mit intersect, es war die richtige Fährte. Allerdings muss der Code erweitert werden, damit er funktioniert, wenn auf mehreren Arbeitsblättern Namen vergeben wurden, so dass nur die Namen des betroffenen Arbeitsblattes mit der intersect Methode überprüft werden. Der Einfachheit halber habe ich die funktion auf Workbook Ebene eingefügt, da so kein weiterer Code bei mehreren Arbeitsblättern erforderlich ist.
Es bleibt nur noch zu prüfen, ob Einzelheiten etwas eleganter lösbar sind.
Hier der funktionierende Code:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim i As Integer
Dim Seite As String
Dim Bezeichnung As String
Set vergebenenamen = ActiveWorkbook.Names
For i = 1 To vergebenenamen.Count
Seite = Range(vergebenenamen(i).Name).Worksheet.Name
Bezeichnung = vergebenenamen(i).Name
'    MsgBox Bezeichnung
If Seite = Target.Worksheet.Name Then
If Not Intersect(Target, Range(Bezeichnung)) Is Nothing Then
MsgBox Range(Bezeichnung).Name.Name
End If
End If
Next i
End Sub

Gruß und Dank
Berthold
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Namen aus Zellen in Excel auslesen


Schritt-für-Schritt-Anleitung

Um den Namen eines Zellbereichs in Excel auszulesen, kannst Du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projektfenster das entsprechende Arbeitsblatt aus, auf dem Du arbeiten möchtest.

  3. Füge den folgenden Code in das Codefenster des Arbeitsblattes ein:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim n As Name
        For Each n In ActiveWorkbook.Names
            If Not Intersect(Target, Range(n.Name)) Is Nothing Then
                MsgBox n.Name
                Exit Sub
            End If
        Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Doppelklicke auf eine Zelle innerhalb eines benannten Bereichs, um den Namen des Bereichs in einer Meldung anzuzeigen.


Häufige Fehler und Lösungen

Fehler: „Die Methode Range ist für das Objekt _Worksheet fehlgeschlagen.“

Lösung: Dieser Fehler tritt häufig auf, wenn Du versuchst, einen Namen zu verwenden, der nicht korrekt definiert ist. Stelle sicher, dass der benannte Bereich existiert und korrekt zugeordnet ist. Überprüfe auch, ob der Name auf mehrere Zellen verweist und nicht nur auf eine einzelne.

Fehler: „Die Namen enthalten nur Verweise auf Zellen.“

Lösung: Um sicherzustellen, dass Du nur die relevanten Namen berücksichtigst, kannst Du den Code erweitern, um diese Namen herauszufiltern. Verwende eine If-Bedingung, die überprüft, ob der Name auf mehr als eine Zelle verweist.


Alternative Methoden

Eine andere Möglichkeit, den Namen aus einer Zelle auszulesen, ist die Verwendung von Formeln:

  • INDIREKT-Funktion: Du kannst die INDIREKT-Funktion verwenden, um auf den Namen eines Bereichs zuzugreifen. Beispiel:

    =INDIREKT("Bereich01")

Hiermit wird der Wert des benannten Bereichs zurückgegeben, aber nicht der Name selbst.


Praktische Beispiele

Angenommen, Du hast einen benannten Bereich „Bereich01“, der die Zellen A1:C4 umfasst. Wenn Du auf eine Zelle innerhalb dieses Bereichs klickst, wird der Name „Bereich01“ angezeigt.

Ein erweitertes Beispiel für den VBA-Code, um nur die Namen des aktuellen Arbeitsblatts auszulesen, könnte so aussehen:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Dim n As Name
    For Each n In ActiveWorkbook.Names
        If n.RefersToRange.Worksheet.Name = Sh.Name Then
            If Not Intersect(Target, Range(n.Name)) Is Nothing Then
                MsgBox n.Name
            End If
        End If
    Next
End Sub

Tipps für Profis

  • Nutze die MsgBox-Funktion, um informative Meldungen anzupassen, damit Du mehr Kontext zur Verwendung des Namens erhältst.
  • Experimentiere mit der Verwendung von Application.InputBox, um den Benutzer nach einem Zellbereich zu fragen, dessen Namen Du auslesen möchtest.
  • Halte Deinen Code organisiert und kommentiere komplexe Abschnitte, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Namen aus einer Liste in Excel auslesen? Du kannst eine Schleife verwenden, um jeden Namen in einer Liste auszugeben. Der Code kann ähnlich wie der oben gezeigte sein, nur dass Du die Namen in einer Array- oder Collections-Struktur speicherst.

2. Funktioniert dieser Code in jeder Excel-Version? Der VBA-Code sollte in den meisten Versionen von Excel, die VBA unterstützen, funktionieren. Es ist jedoch ratsam, dies in Excel 2010 oder neuer zu testen, um sicherzustellen, dass alle Funktionen wie erwartet arbeiten.

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