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

Forumthread: Zellenname ermitteln

Zellenname ermitteln
08.10.2004 11:57:41
yogi
Guten Tag
In einem Tabellenblatt haben diverse Zellen der ersten Spalte einen sprechenden Namen erhalten, z.B. heisst Zelle(A50) "Start".
Werden nun Zeilen zwischen Zeile 1 und 50 eingefügt, verschiebt sich auch Zelle(A50) nach unten, so dass Zelle("Start") nun z.B. in Zeile 100 liegt.
Bei späteren Berechnungen werden alle benutzten Zeilen von 1 bis .. behandelt, wobei ich wissen muss, wann ich auf Zelle("Start") stosse. Gibt es eine Möglichkeit, den Namen einer Zelle direkt auszulesen, ohne über eine Schleife alle Namen abzufragen?
Gruss
yogi
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenname ermitteln
ransi
hallo yogi
ist ne krücke, aber wäre eine möglichkeit:

Sub finde_start()
Application.Goto Reference:="start"
MsgBox ActiveCell.Address
End Sub

ransi
AW: Zellenname ermitteln
08.10.2004 12:13:57
Matthias
Hallo Yogi,
Ist zwar auch eine Schleife, aber die brauchst du ja sowieso:

Sub test()
Dim z
For Each z In Range("A1:A100")
If Range(Names("Start").RefersTo).Address = z.Address Then MsgBox "Start bei " & z.Address
Next
End Sub

Gruß Matthias
Anzeige
AW: Zellenname ermitteln
08.10.2004 12:34:41
yogi
Vielen Dank für die Vorschläge, kann damit etwas anfangen.
Zusatzfrage: die Arbeitsmappe hat tonnenweise benannte Zellen, da möchte ich gerne wissen, ob die aktive Zelle einen Namen hat, z.B.
If ActiveCell.Name "" Then ....
gibts da was ohne alle Namen abklappern zu müssen?
Gruss
yogi
Anzeige
AW: Zellenname ermitteln
08.10.2004 12:45:57
Matthias
Hallo Yogi,
mir fällt da nichts ein, aber mit dieser Funktion geht's doch recht einfach:

Function HatNamen(b As Range)
Dim n As Name
For Each n In Names
If Range(n.RefersTo).Address = b.Address Then
HatNamen = n.Name
Exit Function
End If
Next n
HatNamen = ""
End Function

Es sei denn, es ist ein Geschwindigkeitsproblem.
Gruß Matthias
Anzeige
AW: Zellenname ermitteln
08.10.2004 12:54:51
yogi
Hoi Matthias
Tempo ist genau das Problem, ich muss durch jede Menge Zellen durchnudeln und habe jede Menge Namen, das mit der Schleife erlaubt mir regelmässige Pausen zu machen.
Darum meine Frage!
Trotzdem Dank
yogi
AW: Zellenname ermitteln
08.10.2004 13:38:19
Matthias
Hallo Yogi,
hab doch 'ne Möglichkeit gefunden! Ich hoffe, sie gefällt dir:
getestet aber nur mit Excel XP:

Function HatNamen(b As Range) As String
Dim n As String
On Error Resume Next
n = Names(, , CStr(b.Name)).Name
If Err.Number > 0 Then
HatNamen = ""
Exit Function
Else
HatNamen = n
End If
End Function

Grüße,
Matthias
Anzeige
AW: Zellenname ermitteln
08.10.2004 15:12:46
yogi
Tja, da staunt der Laie und der Fachmann wundert sich, keine Kaffepausen mehr!!!
Es funktioniert sogar mit Excel 97!!
Danke
yogi
AW: Zellenname ermitteln
08.10.2004 16:08:58
Matthias
Hallo Yogi,
hier die Variante mit Kaffeepause: ;-)

Function HatNamen(b As Range) As String
Dim n As String
Application.Wait Now+TimeValue("00:10:00")
On Error Resume Next
n = Names(, , CStr(b.Name)).Name
If Err.Number > 0 Then
HatNamen = ""
Exit Function
Else
HatNamen = n
End If
End Function

Grüße,
Matthias
Anzeige
AW: Zellenname ermitteln
ransi

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo raus
If ActiveCell.Name <> "" Then MsgBox ActiveCell.Name
raus:
End Sub

ransi
AW: Zellenname ermitteln
08.10.2004 13:08:28
yogi
Salü ransi
ActiveCell.Name gibt etwas wie "=Tabelle1!$A$502" und nicht "Start".
Leider!
yogi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zellenname ermitteln in Excel


Schritt-für-Schritt-Anleitung

Um den Namen einer Zelle in Excel auszugeben, kannst Du die folgende VBA-Funktion verwenden. Diese Funktion prüft, ob die aktive Zelle einen Namen hat und gibt diesen zurück. Hier ist der Code:

Function HatNamen(b As Range) As String
    Dim n As String
    On Error Resume Next
    n = Names(, , CStr(b.Name)).Name
    If Err.Number > 0 Then
        HatNamen = ""
        Exit Function
    Else
        HatNamen = n
    End If
End Function

Um diese Funktion zu nutzen, öffne den VBA-Editor (Alt + F11), erstelle ein neues Modul und füge den obigen Code ein. Du kannst dann die Funktion HatNamen(ActiveCell) verwenden, um den Namen der aktiven Zelle zu ermitteln.


Häufige Fehler und Lösungen

1. Fehler: Die Funktion gibt einen Fehler zurück, wenn die Zelle keinen Namen hat.
Lösung: Stelle sicher, dass Du die Fehlerbehandlung mit On Error Resume Next implementierst, um sicherzustellen, dass der Code nicht abbricht.

2. Fehler: Die Rückgabe ist nicht die erwartete Ausgabe.
Lösung: Überprüfe, ob die Zelle tatsächlich benannt ist. Du kannst dies auch im Namensmanager von Excel überprüfen.


Alternative Methoden

Eine andere Möglichkeit, den Zellenname auszugeben, ist die Verwendung von Application.Goto in einem Sub. Hier ist ein Beispiel:

Sub finde_start()
    Application.Goto Reference:="start"
    MsgBox ActiveCell.Address
End Sub

Diese Methode springt direkt zu der benannten Zelle und zeigt die Adresse an. Du kannst den Namen der Zelle auch direkt in einer Message-Box ausgeben, wenn Du den Namen kennst.


Praktische Beispiele

  1. Zellenname ausgeben: Wenn Du eine Zelle mit dem Namen „Start“ hast und wissen möchtest, wo sie sich befindet, kannst Du die Funktion HatNamen verwenden, um sie zu identifizieren.

  2. Aktive Zelle prüfen: Mit dem folgenden Code kannst Du überprüfen, ob die aktive Zelle einen Namen hat und diesen ausgeben:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo raus
    If ActiveCell.Name <> "" Then MsgBox ActiveCell.Name
raus:
End Sub

Diese Methode gibt den Namen der Zelle in einer Message-Box aus, wenn Du die Auswahl änderst.


Tipps für Profis

  • Verwendung von Named Ranges: Nutze benannte Bereiche, um den Überblick über wichtige Zellen zu behalten. Das kann Dir helfen, schneller auf bestimmte Zellen zuzugreifen, insbesondere in großen Datensätzen.

  • Performance-Optimierung: Wenn Du viele benannte Zellen hast und die Performance leidet, überlege, ob Du die Schleifen in Deinem Code optimieren kannst oder ob Du auf die Verwendung von Array-Variablen umsteigst.


FAQ: Häufige Fragen

1. Wie kann ich alle Zellen mit Namen auflisten?
Du kannst eine Schleife über alle Names-Objekte in Deiner Arbeitsmappe erstellen:

Sub ListNames()
    Dim n As Name
    For Each n In Names
        Debug.Print n.Name & " refers to " & n.RefersTo
    Next n
End Sub

2. Ist es möglich, die Namen der Zellen in eine Liste auszugeben?
Ja, Du kannst die Namen der Zellen in eine Excel-Tabelle ausgeben, indem Du eine Schleife verwendest, um die Namen zu durchlaufen und sie in die Zellen Deiner Wahl zu schreiben.

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