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:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Wähle im Projektfenster das entsprechende Arbeitsblatt aus, auf dem Du arbeiten möchtest.
-
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
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
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:
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.