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

target.name.name

Forumthread: target.name.name

target.name.name
02.11.2006 15:03:42
eres
Hallo Excel-Freunde,
benutze folgenden Ereigniscode:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Name.Name = "TREFFER" Then
MsgBox "blubberblubber", vbCritical
End If
End Sub

Ändere ich nun die Zelle mit Namen "TREFFER" erhalte ich wie gewünscht die MsgBox. Ändere ich hingegen irgend eine andere Zelle erhalte ich die Fehlermeldung: Laufzeitfehler 1004, Anwendungs- oder Objektdefinierter Fehler.
Das Sheet ist nicht geschützt, hat keine verbundenen Zellen.
Kann mir jemand einen Tipp geben, woran es liegen könnte ?
Vielen Dank im voraus und Gruss ans Forum
erwin
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: target.name.name
02.11.2006 15:14:44
Dan
Hi, mit target.name.name fragst Du den Name des Name Objektes vom Target.
Also etwas so:
dim n as name
set n = target.name
if(n.name = "TREFFER")then ...
Wenn man etwas veraendert in einer Zelle, wo kein 'Name' definiert ist, ist der Verweiss target.name unguelitig und der Error erscheinnt.
Ist es verstaendlich mit meiner Deutch? :-) Gruss Dan, cz.
Anzeige
AW: target.name.name
02.11.2006 15:20:30
eres
Hallo Dan, vielen Dank für die verständliche Erklärung.
Habe es dann so gelöst:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Goto Ende
If Target.Name.Name = "TREFFER" Then
MsgBox "blubberblubber", vbCritical
End If
Ende:
End Sub

Ist sicherlich nicht elegant, funktioniert aber ...
Falls noch jemand etwas elegantes empfehlen könnte wäre ich natürlich sehr dankbar.
Gruss
erwin
Anzeige
AW: target.name.name
03.11.2006 17:37:18
Erich
Hallo Erwin,
probier mal diese Möglichkeiten:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [TREFFER]) Is Nothing Then
'oder
'  If Target.Address = [TREFFER].Address Then
'oder
'  If Target.Address = Range("TREFFER").Address Then
MsgBox "blubberblubber", vbCritical
End If
End Sub
On Error ... vermeide ich möglichst.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: target.name.name
06.11.2006 08:34:48
eres
Hallo Erich,
das ist natürlich eine saubere und elegante Lösung.
Habe ich sofort reinkopiert und funktioniert prima.
(War aber auch nicht anders zu erwarten bei der Quelle:
"Erich aus Kamp-Lintfort" = Qualtitätsstufe 1
Nochmals vielen Dank und Grüsse an den Niederrhein
erwin
Anzeige
;
Anzeige

Infobox / Tutorial

Fehlerbehebung bei "target.name.name" in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und gehe zum Visual Basic for Applications (VBA)-Editor mit ALT + F11.

  2. Wähle das entsprechende Arbeitsblatt aus, in dem du den Code einfügen möchtest.

  3. Füge den folgenden Code ein in das Arbeitsblatt-Modul:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, [TREFFER]) Is Nothing Then
           MsgBox "blubberblubber", vbCritical
       End If
    End Sub
  4. Speichere dein Projekt und teste die Funktion, indem du die Zelle änderst, die den Namen "TREFFER" trägt.


Häufige Fehler und Lösungen

  • Fehler: #NAME? Excel

    • Ursache: Wenn die Zelle, die du änderst, keinen definierten Namen hat.
    • Lösung: Verwende If Not Intersect(Target, [TREFFER]) Is Nothing Then, um sicherzustellen, dass der Code nur ausgeführt wird, wenn die Zielzelle den Namen hat.
  • Laufzeitfehler 1004

    • Ursache: Wenn du Target.Name.Name verwendest und der Target-Bereich keinen Namen hat.
    • Lösung: Setze die Überprüfung wie in der Schritt-für-Schritt-Anleitung beschrieben ein.

Alternative Methoden

Du kannst auch andere Ansätze ausprobieren, um die gleiche Funktionalität zu erreichen:

  1. Verwenden von Target.Address:

    If Target.Address = Range("TREFFER").Address Then
       MsgBox "blubberblubber", vbCritical
    End If
  2. Verwenden von Name-Objekten:

    Dim n As Name
    Set n = Target.Name
    If n.Name = "TREFFER" Then
       MsgBox "blubberblubber", vbCritical
    End If

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die Funktionsweise besser zu verstehen:

  • Beispiel 1: Wenn du eine Zelle mit dem Namen "ZIEL" hast:

    If Not Intersect(Target, [ZIEL]) Is Nothing Then
       MsgBox "Du hast das Ziel erreicht!", vbInformation
    End If
  • Beispiel 2: Multi-Name-Überprüfung:

    If Not Intersect(Target, [TREFFER]) Is Nothing Or Not Intersect(Target, [ZIEL]) Is Nothing Then
       MsgBox "Eine der Zielzellen wurde geändert!", vbInformation
    End If

Tipps für Profis

  • Verwende On Error Resume Next nur, wenn du sicher bist, dass es zu einem Fehler kommen könnte. Vermeide es, Fehler zu ignorieren, da dies die Fehlersuche erschwert.
  • Benutze Application.EnableEvents = False am Anfang deines Codes, um zu verhindern, dass das Worksheet_Change-Ereignis rekursiv ausgelöst wird.
  • Dokumentiere deinen Code mit Kommentaren, um die Lesbarkeit und Wartbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Was bedeutet der Fehler #NAME? in Excel?
Das bedeutet, dass Excel einen Namen nicht erkennen kann, weil er nicht definiert ist oder falsch geschrieben wurde.

2. Wie kann ich sicherstellen, dass mein VBA-Code immer funktioniert?
Verwende die Intersect-Methode, um zu überprüfen, ob die Änderung an einer benannten Zelle stattgefunden hat, bevor du darauf zugreifst.

3. Was ist der Unterschied zwischen Target.Name und Target.Address?
Target.Name gibt den Namen des Zielbereichs zurück, während Target.Address die Adresse der Zelle zurückgibt.

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