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

Forumthread: Zellen mit Zellennamen ansprechen

Zellen mit Zellennamen ansprechen
29.01.2013 08:24:35
StepT
Guten morgen,
Ich habe eine Exceldatei mit verschiedenen Arbeitsblättern. Auf diesen habe ich verschiedene wichtige Zellen, welchen ich jeweils einen Namen gegeben habe.
Theoretisch weiß Excel durch den Namensmanager ja auf welchem Arbeitsblatt welcher Zellname definiert ist.
Ich habe zum Bsp. die Zelle mit dem Namen "Sparte_Gruppendaten_CPK". Diese Zelle kann sich theoretisch auf einer von vier verschiedenen Arbeitsblättern befinden.
Wie kann ich die Zelle ansprechen ohne alle vier Arbeitsblätter durchsuchen lassen zu müssen?
Im Grunde will ich nur überprüfen, ob die Zelle eine Formel enthält, es sollte also in die Richtung von:
Thisworkbook.Range("Sparte_Gruppendaten_CPK").HasFormula
gehen.
PS: Das Problem ist hier stark vereinfacht dargestellt. Zellnamen kann ich leider nicht anpassen

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ist doch genau richtig so ...
29.01.2013 08:45:59
Matthias
Hallo
Wenn Du nur wissen willst ob ne Formel in dieser Zelle steht, ist doch der Weg genau richtig.
If Range("Sparte_Gruppendaten_CPK").HasFormula Then
MsgBox "Formel vorhanden"
End If
Gruß Matthias

AW: ist doch genau richtig so ...
29.01.2013 08:52:51
Luschi
Hallo Matthias,
mit Deiner Variante erleide ich regelmaßig Schiffbruch, wobei ich dazu sagen muß, daß ich
100te von Namen in 1 Arbeitsmappe habe. Deshalb mache ich den Zugriff nur noch so:

If ThisWorkbook.Names("Sparte_Gruppendaten_CPK").RefersToRange.HasFormula Then
MsgBox "Formel vorhanden"
End If
Gruß von Luschi
aus klein-Paris

Anzeige
was passiert denn bei dieser Variante
29.01.2013 09:24:01
Matthias
Hallo Luschi
Vorab - Ist ja nicht meine Variante ;-)
Der Vorschlag kam ja vom Fragenden selbst.
Ich habs nur mit diesem einen Namen getestet(auf verschiedenen Blättern)
Das hatte ohne Probleme funktioniert.
Du schreibst mit dieser Variante erleidest Du regelmaßig Schiffbruch.
Was meinst Du damit, was passiert dann bei Dir?
Will ja auch dazulernen.
Gruß Matthias

Anzeige
AW: was passiert denn bei dieser Variante
29.01.2013 13:25:54
Luschi
Hallo Matthias,
das ist so wie in dem Lied 'Tausend mal berührt und nichts ist passiert...'. Bei '1001' (im übertragenem Sinn) kommt dann die häßliche Debugger-Meldung Error 1004 oder 424. Und jedesmal ist es dann ein anderer definierte Name, der ihm nicht paßt.
Neuerdings benutze ich wieder dieses Konstrukt:

If [Sparte_Gruppendaten_CPK].HasFormula Then
MsgBox "Formel vorhanden"
End If
Darüber hat noch kein Kunde eine Fehler-Ticket abgegeben und Excel 2013 spielt da auch noch mit.
Gruß von Luschi
aus klein-Paris

Anzeige
Danke für Deine Informationen
29.01.2013 22:55:16
Matthias
Hallo Luschi
Was ist wenn ich nach: If .RefersToRange.HasFormula
mit With Range("Sparte_Gruppendaten_CPK") arbeite ?
siehe Code:
 With ThisWorkbook.Names("Sparte_Gruppendaten_CPK")
If .RefersToRange.HasFormula Then
With Range("Sparte_Gruppendaten_CPK")
MsgBox "Formel vorhanden in " & .Parent.Name & .AddressLocal
End With
End If
End With
Besser oder eher auch ungünstig?
Gruß Matthias

Anzeige
AW: Danke für Deine Informationen
30.01.2013 08:45:53
Luschi
Hallo Matthias,
da ThisWorkbook.Names("Sparte_Gruppendaten_CPK").RefersToRange bereits ein Range-Objekt
ist, kann man es auch so machen:

With ThisWorkbook.Names("Sparte_Gruppendaten_CPK")
If .RefersToRange.HasFormula Then
MsgBox "Formel vorhanden in " & .RefersToRange.Parent.Name & " - " & .RefersToRange. _
AddressLocal
End If
End With
oder
With ThisWorkbook.Names("Sparte_Gruppendaten_CPK").RefersToRange
If .HasFormula Then
MsgBox "Formel vorhanden in " & .Parent.Name & " - " & .AddressLocal
End If
End With
Gruß von Luschi
aus klein-Paris

Anzeige
Danke
30.01.2013 11:54:19
Matthias
Hallo Luschi
Der Syntax war bei meinem Test falsch.
Hatte es mit With .RefersToRange versucht und war gescheitert.
Danke
Gruß Matthias

AW: Zellen mit Zellennamen ansprechen
29.01.2013 08:47:38
Dieter(Drummer)
Hi Step T,
versuche mal dirtekt das entsprechende Tabellanblatt mit einzusetzen:
Statt: Thisworkbook.Range("Sparte_Gruppendaten_CPK").HasFormula
So z.B.: Thisworkbook.Range("Tabelle1!Sparte_Gruppendaten_CPK").HasFormula
Gruß, Dieter(Drummer)

Anzeige
das ist nicht nötig
29.01.2013 08:52:36
Matthias
Hallo Dieter
so holst Du Dir alle Infos die Du brauchst.
With Range("Sparte_Gruppendaten_CPK")
If .HasFormula Then
MsgBox "Formel vorhanden in " & .Parent.Name & .AddressLocal
End If
End With
Gruß Matthias

AW: Danke Matthias ...
29.01.2013 09:14:24
Dieter(Drummer)
... habe wieder etwas gelernt und der Tag war nicht umsonst.
Gruß und einen schönen Tag,
Dieter(Drummer)

Anzeige
AW: vielleicht nochmal zusammenfassend
29.01.2013 13:34:24
Daniel
Hi
wenn sich der benannte Zellbereich in der gerade aktiven Datei befindet, dann kann man ihn direkt über
Range("Name des Zellbereichs") ansprechen.
Arbeitet man jedoch mit mehrern Dateien parallel und man muss die Datei dazu mit angeben, dann muss man zusätzlich zur Datei auch noch das Tabellenblatt mit angeben:
ThisWorkbook.Sheets("Tabelle1").Range("Name des Zellbereichs")
oder, wenn das Tabellenblatt nicht bekannt ist, wie von Luschi beschrieben über das Names-Objekt gehen:
ThisWorkbook.Names("Name des Zellbereichs").RefersToRange
Gruß Daniel

Anzeige
AW: vielleicht nochmal zusammenfassend
29.01.2013 23:06:16
Matthias
Hallo Daniel
Dann lag ich ja doch nicht ganz so falsch
denn Zitat:
Ich habe eine Exceldatei mit verschiedenen Arbeitsblättern
Somit ist mein Vorschlag ja "im Grunde genommen" richtig,
denn von dieser Aussage bin ich auch ausgegangen.
Werde aber mal Luschis Vorschlag im Auge behalten und ein bisschen Testen
Man lernt ja immer gern dazu.
Gruß Matthias

Anzeige
AW: vielleicht nochmal zusammenfassend
29.01.2013 23:50:28
Daniel
Hi
die Methode über das NAMES-Objekt funktioniert jedoch nur bei Namen mit einer direkten Zuweisung des Zellbereichs.
Wird der Zellbereich des Namens über eine Formel berechnen, muss man über RANGE gehen.
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen mit Zellennamen ansprechen in Excel


Schritt-für-Schritt-Anleitung

Um eine benannte Zelle in Excel VBA anzusprechen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsbuch)", wähle "Einfügen" und dann "Modul".

  3. Füge den folgenden Code ein, um die benannte Zelle zu überprüfen:

    If ThisWorkbook.Names("Sparte_Gruppendaten_CPK").RefersToRange.HasFormula Then
       MsgBox "Formel vorhanden"
    End If
  4. Führe den Code aus: Drücke F5, um das Makro zu starten.


Häufige Fehler und Lösungen

  • Fehler 1004 oder 424: Diese Fehler treten auf, wenn der Zellname nicht existiert oder falsch geschrieben ist. Überprüfe die Schreibweise des Zellennamens im Namensmanager.
  • Debugging-Meldungen: Wenn du bei der Verwendung von ThisWorkbook.Names("Zellenname") auf Probleme stößt, kann es an der Anzahl der Zellen liegen, die du in deiner Arbeitsmappe hast. Reduziere die Anzahl der benannten Zellen, um die Übersichtlichkeit zu verbessern.
  • Formelüberprüfung: Stelle sicher, dass die Zelle tatsächlich eine Formel enthält. Verwende HasFormula, um dies zu überprüfen.

Alternative Methoden

Falls du mit mehreren Arbeitsblättern arbeitest und den Zellennamen direkt ansprechen möchtest, kannst du diese Alternativen verwenden:

  1. Direkte Ansprache der Zelle:

    If ThisWorkbook.Sheets("Tabelle1").Range("Sparte_Gruppendaten_CPK").HasFormula Then
       MsgBox "Formel vorhanden"
    End If
  2. Verwendung von With:

    With ThisWorkbook.Names("Sparte_Gruppendaten_CPK").RefersToRange
       If .HasFormula Then
           MsgBox "Formel vorhanden in " & .Parent.Name & " - " & .AddressLocal
       End If
    End With

Diese Methoden sind besonders nützlich, wenn du mit vielen benannten Zellen arbeitest.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Zellennamen in Excel VBA ansprechen kannst:

  • Überprüfung einer Formel in einer Zelle:

    If Range("Sparte_Gruppendaten_CPK").HasFormula Then
      MsgBox "Die benannte Zelle enthält eine Formel."
    End If
  • Fehlerbehandlung bei nicht existierenden Zellnamen:

    On Error Resume Next
    If Not ThisWorkbook.Names("Sparte_Gruppendaten_CPK") Is Nothing Then
      If ThisWorkbook.Names("Sparte_Gruppendaten_CPK").RefersToRange.HasFormula Then
          MsgBox "Formel vorhanden"
      End If
    Else
      MsgBox "Zellenname existiert nicht."
    End If
    On Error GoTo 0

Diese Beispiele helfen dir, die Flexibilität von Excel VBA zur Überprüfung von benannten Zellen zu nutzen.


Tipps für Profis

  • Verwende den Namensmanager: Halte deine benannten Zellen organisiert. Das macht es einfacher, sie in deinem Code zu verwenden und zu verwalten.
  • Vermeide zu viele benannte Zellen: Wenn möglich, beschränke die Anzahl der Zellennamen in einer Arbeitsmappe, um die Übersichtlichkeit zu verbessern.
  • Nutze Kommentare im Code: Dokumentiere deine VBA-Codes, um die Lesbarkeit und Wartbarkeit zu erhöhen.
  • Teste in einer Kopie der Datei: Bevor du Änderungen an einer wichtigen Datei vornimmst, teste deinen Code in einer Kopie, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie spreche ich eine benannte Zelle in einem anderen Arbeitsblatt an?
Du kannst dies tun, indem du den Arbeitsblattnamen in deinem Code angibst, wie zum Beispiel:

ThisWorkbook.Sheets("Tabelle1").Range("Zellenname")

2. Was mache ich, wenn der Zellname nicht existiert?
Überprüfe im Namensmanager, ob der Zellname richtig definiert ist und korrekt geschrieben wurde.

3. Kann ich Zellen mit speziellen Zeichen im Namen ansprechen?
Ja, solange der Zellname im Namensmanager korrekt definiert ist, kannst du ihn über den VBA-Code ansprechen, ohne Probleme.

4. Wie kann ich alle benannten Zellen auflisten?
Du kannst alle benannten Zellen mit folgendem Code auflisten:

Dim n As Name
For Each n In ThisWorkbook.Names
    Debug.Print n.Name
Next n

Mit diesen Informationen bist du bestens gerüstet, um Zellennamen in Excel effizient anzusprechen und zu verwalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige