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

Target.Address mit Range

Forumthread: Target.Address mit Range

Target.Address mit Range
09.06.2009 23:46:26
Peter
Guten Abend
Ich möchte einen Makro aufrufen, wenn eine Zelle innerhalb des Ranges "rZellen" (beinhaltet zwei Zellen) verändert wird.
Was ist am untenstehenden Code falsch?
Danke für eine Antwort.
Gruss, Peter
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("rZellen").Address Then
Call zAusblenden
End If
End Sub


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Target.Address mit Range
09.06.2009 23:52:31
Daniel
Hi
das funktioniert nur, wenn der Anwender alle Zellen, die zum Range "rZellen" gehören gleichzeitig markiert und verändert, nur dann sind die Zellbereiche und damit die Addressen gleich.
wird nur eine Zelle aus "rZellen" selektiert und verändert, passiert natürlich nichts, weil die Addressen ja nicht gleich sind.
aber vermutlich funktioniert folgende Prüfung:
If Not Intersect(Target, Range("rZellen")) is nothing Then Call Ausblenden
Gruß, Daniel
Anzeige
AW: Target.Address mit Range
10.06.2009 07:13:19
Peter
Hallo Daniel
Vielen Dank
Funktioniert so!
Gruss, Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Target.Address mit Range in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf den gewünschten Arbeitsblattnamen im Project Explorer und wähle "Code anzeigen".
  3. Schreibe den folgenden Code:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("rZellen")) Is Nothing Then
           Call zAusblenden
       End If
    End Sub
    • Hierbei wird die Intersect-Methode verwendet, um zu überprüfen, ob die geänderte Zelle innerhalb des definierten Bereichs rZellen liegt.
  4. Teste den Code:

    • Ändere eine der Zellen im Bereich rZellen und überprüfe, ob die Funktion zAusblenden aufgerufen wird.

Häufige Fehler und Lösungen

  • Problem: Der Code funktioniert nur, wenn alle Zellen im Bereich rZellen gleichzeitig geändert werden.

    • Lösung: Verwende die Intersect-Methode, um die geänderte Zelle zu prüfen, wie im obigen Beispiel gezeigt.
  • Problem: Target.Address und Range("rZellen").Address sind nicht gleich.

    • Lösung: Stattdessen solltest Du die Intersect-Funktion verwenden, um zu überprüfen, ob der Target in rZellen liegt.

Alternative Methoden

  • Verwendung von Target.Address:

    If Target.Address = Range("rZellen").Address Then
       Call zAusblenden
    End If
    • Diese Methode funktioniert allerdings nur, wenn der Benutzer alle Zellen im rZellen-Bereich gleichzeitig ändert.
  • Verwendung von Application.Caller:

    • Eine weitere Methode könnte die Verwendung von Application.Caller sein, um den Ursprung des Makros zu bestimmen.

Praktische Beispiele

  1. Beispiel für einen einfachen Bereich:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1:B2")) Is Nothing Then
           MsgBox "Zelle geändert!"
       End If
    End Sub
    • Bei einer Änderung in den Zellen A1 oder B2 wird eine Nachricht angezeigt.
  2. Beispiel für mehrere Bereiche:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Union(Range("A1:A5"), Range("B1:B5"))) Is Nothing Then
           Call zAusblenden
       End If
    End Sub
    • Hier wird die Funktion aufgerufen, wenn eine Zelle in den angegebenen Bereichen geändert wird.

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was zu weniger Fehlern führt.

  • Fehlerbehandlung einfügen:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
    • Dies kann nützlich sein, um Laufzeitfehler zu vermeiden.
  • Optimierung: Überlege, ob Du die Ausführung von Ereignissen (Events) temporär deaktivieren möchtest, um die Performance zu verbessern:

    Application.EnableEvents = False
    ' Dein Code
    Application.EnableEvents = True

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Target und Range in VBA? Target ist der Bereich, der durch die Änderung in der Excel-Tabelle beeinflusst wird, während Range ein spezifischer Zellbereich ist, den Du definiert hast.

2. Wie kann ich sicherstellen, dass zAusblenden nur aufgerufen wird, wenn eine bestimmte Zelle geändert wird? Verwende die Intersect-Methode, um zu überprüfen, ob der Target in dem spezifischen Range liegt, den Du definiert hast.

3. Funktioniert dieser Code in jeder Excel-Version? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.

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