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

Forumthread: Zellenname per VBA bestimmen

Zellenname per VBA bestimmen
18.05.2005 08:53:20
Gordon
Hallo,
wie ich kann den Zellennamen einer einzelnen Zelle per VBA erzeugen ?
Vielen Dank,
Gordon
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenname per VBA bestimmen
18.05.2005 09:00:10
Hajo_Zi
Hallo Gordon,
benutze den Makrorecorder.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem Windows 2000 SP4 und Excel Version 2000 SP3.



"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
AW: Zellenname per VBA bestimmen
18.05.2005 09:00:39
Matthias
Hallo Gordon,
z.B.
ActiveWorkbook.Names.Add Name:="Meinname", RefersTo:="=Tabelle1!$A$1"

Gruß Matthias
AW: Zellenname per VBA bestimmen
18.05.2005 09:15:45
Gordon
Hallo,
vielen Dank für die Hilfe.
wie kann ich die Zelle variabel halten ?
"=Tabelle!$a$1" ich meine den Teil hinter dem "!".
Habe schon $x$y versucht oder target.row, target.column ... aber das mag er nicht.
Danke
Anzeige
AW: Zellenname per VBA bestimmen
18.05.2005 09:27:32
Matthias
Hallo Gordon,
das geht mit der Address-Eigenschaft der Range-Funktion.
z.B.

Sub NameSetzen()
Dim z As Integer, s As Integer
z = 1 'Zeile 1
s = 5 'Spalte 5
ActiveWorkbook.Names.Add Name:="Meinname", RefersTo:="=Tabelle1!" & Cells(z, s).Address
End Sub

Gruß Matthias
Anzeige
AW: Zellenname per VBA bestimmen
18.05.2005 10:10:57
Gordon
Hallo Mathias,
danke für die Hilfe, hab es jetzt auch mit Refersto... activecell hinbekommen.
Wie kann ich den einen Zellenname löschen, wenn ich nur den Bezug(zum Beispiel $A$1) habe nicht den namen.
oder anders gefragt wo krieg ich den Zellennamen her ;) ?
Vielen Dank.
AW: Zellenname per VBA bestimmen
18.05.2005 10:19:23
Matthias
Hallo Gordon,
versuch mal dies:

'Prüft, ob Bereich einen Namen hat und gibt ihn zurück (sonst""):
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

Zum Testen:

Sub Checkname()
Dim n As String
n = HatNamen(ActiveCell)
If n = "" Then
MsgBox "kein Name"
Else
MsgBox n
End If
End Sub
Gruß Matthias
Anzeige
AW: Zellenname per VBA bestimmen
18.05.2005 10:31:39
Gordon
Hallo Mathias,
auf anhieb funktioniert die Funktion nicht.
In der Funktion selber ist n = "" und somit kein Name obwohl diese Celle einen Namen hat.
ich schau grad selber mal nach warum und wieso n = "".
Danke trotzdem.
AW: Zellenname per VBA bestimmen
18.05.2005 10:46:32
Gordon
also ... VBA liefert,
? err.Description
Anwendungs- oder objektdefinierter Fehler
? Names(, , CStr(b.Name)).Name
... als Antwort ?
funktioniert dies bei dir ?
Anzeige
Zellenname ist erledigt ! Danke
18.05.2005 10:54:32
Gordon
Hallo Mathias,
hab den Fehler gefunden(zumindest bei mir).
es fehlte in der Funktion der Zusatz "activeWorkbook".names( , , ....)
nun funktioniert es.
Danke
AW: Zellenname per VBA bestimmen
18.05.2005 10:57:41
Matthias
Hallo Gordon,
also bei mir klappt es.
Hab es extra nochmal unter Excel97 getestet, auch da kein Problem.
Beachte, dass das Argument ein Bereich sein muss, z.B. HatNamen(Range("A1"))
Gruß Matthias
Anzeige
Danke für die Rückmeldung, geschlossen - o.T.
18.05.2005 11:00:22
Matthias
-
;
Anzeige
Anzeige

Infobox / Tutorial

Zellenname per VBA bestimmen


Schritt-für-Schritt-Anleitung

Um den Zellenname in Excel per VBA zu bestimmen, kannst Du folgende Schritte befolgen:

  1. Makro-Recorder verwenden:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
    • Gehe zu „Einfügen“ > „Modul“, um ein neues Modul zu erstellen.
  2. Einen Zellenname hinzufügen:

    • Verwende den folgenden Code, um einen Zellenname zu erstellen:
      ActiveWorkbook.Names.Add Name:="Meinname", RefersTo:="=Tabelle1!$A$1"
  3. Zellenname variabel halten:

    • Du kannst die Zeile und Spalte dynamisch anpassen. Hier ein Beispiel:
      Sub NameSetzen()
      Dim z As Integer, s As Integer
      z = 1 'Zeile 1
      s = 5 'Spalte 5
      ActiveWorkbook.Names.Add Name:="Meinname", RefersTo:="=Tabelle1!" & Cells(z, s).Address
      End Sub
  4. Zellenname löschen:

    • Um einen Zellenname zu löschen, kannst Du den folgenden Code verwenden:
      ActiveWorkbook.Names("Meinname").Delete

Häufige Fehler und Lösungen

  • Fehler beim Überprüfen des Zellennamens: Wenn Du versuchst, einen Zellenname zu überprüfen, und n = "" zurückgibst, stelle sicher, dass Du die richtige Syntax verwendest:

    Function HatNamen(b As Range) As String
       Dim n As String
       On Error Resume Next
       n = ActiveWorkbook.Names(, , CStr(b.Name)).Name
       If Err.Number > 0 Then
           HatNamen = ""
           Exit Function
       Else
           HatNamen = n
       End If
    End Function
  • Anwendungsfehler: Wenn Du einen Fehler wie "Anwendungs- oder objektdefinierter Fehler" erhältst, überprüfe, ob der Zellenname tatsächlich existiert und ob Du einen gültigen Bereich übergibst.


Alternative Methoden

Eine weitere Möglichkeit, den Zellenname zu bestimmen, besteht darin, die Excel.Worksheet.Names-Sammlung zu verwenden. Damit kannst Du alle definierten Namen auflisten:

Sub AlleNamenAuflisten()
    Dim n As Name
    For Each n In ActiveWorkbook.Names
        Debug.Print n.Name & " = " & n.RefersTo
    Next n
End Sub

Diese Methode kann hilfreich sein, um einen Überblick über alle Zellenamen in Deiner Arbeitsmappe zu erhalten.


Praktische Beispiele

  • Zellenname abrufen:

    Sub ZellennameAbrufen()
       Dim n As String
       n = HatNamen(Range("A1"))
       If n = "" Then
           MsgBox "Kein Name"
       Else
           MsgBox "Der Zellenname ist: " & n
       End If
    End Sub
  • Zellenname löschen, wenn nur der Bezug bekannt ist:

    Sub ZellennameLoeschen()
       Dim zelle As Range
       Set zelle = Range("$A$1")
       Dim nameToDelete As String
       nameToDelete = HatNamen(zelle)
       If nameToDelete <> "" Then
           ActiveWorkbook.Names(nameToDelete).Delete
           MsgBox "Zellenname gelöscht: " & nameToDelete
       Else
           MsgBox "Kein Zellenname gefunden."
       End If
    End Sub

Tipps für Profis

  • Nutze die RefersTo-Eigenschaft, um dynamische Bezüge zu erstellen. Mit Range("A" & i) kannst Du beispielsweise auf unterschiedliche Zeilen zugreifen.
  • Verwende den Makro-Recorder, um schnell VBA-Code zu generieren. Das ist besonders nützlich, um den excel zellenname zu erstellen oder zu ändern.
  • Halte Deine Codes modular, indem Du Funktionen für wiederkehrende Aufgaben schreibst, wie das Überprüfen und Löschen von Zellenamen.

FAQ: Häufige Fragen

1. Wie kann ich einen Zellenname in Excel löschen? Um einen Zellenname zu löschen, verwende den Code:

ActiveWorkbook.Names("Meinname").Delete

2. Kann ich einen Zellenname mit Bezug auf eine Zelle erstellen? Ja, das geht. Du kannst den Zellenname mit der RefersTo-Eigenschaft und der Address-Funktion dynamisch erstellen.

3. Wie finde ich den Zellenname einer bestimmten Zelle? Nutze die Funktion HatNamen, um den Zellenname einer bestimmten Zelle zu überprüfen.

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