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

Private Sub Worksheet_Change(ByVal Target As Range

Forumthread: Private Sub Worksheet_Change(ByVal Target As Range

Private Sub Worksheet_Change(ByVal Target As Range
Volker
Private Sub Worksheet_Change(ByVal Target As Range)
Hallo liebe Excel- gemeinde.
Ich habe schon mehrer Makros (Code) in einer Arbeitsmappe, die mit der o.g. Anfangszeile beginnen. Leider "hamonieren" diese Codes leider nicht so miteinander. Gibt es die Möglichkeit, diese verschiedenen Codes miteinander zum richtigen laufen zu bringen? oder besser: ich schalte diesen Code während der Bearbeitung meiner Mappe, wenn gewünscht ab, aber auch wenn nötig wieder an, ohne diese Mappe zu verlassen zu müssen.
Ich hoffe ich habe mich richtig ausgedrückt, denn mein Fehler ist es eben diese nicht gleich richtig zu tun...
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
09.12.2009 16:10:17
Hajo_Zi
Hallo Volker,
unter der Tabelle darf nur 1x Private Sub Worksheet_Change(ByVal Target As Range)
stehen.
Gruß Hajo
AW: Private Sub Worksheet_Change(ByVal Target As Range
09.12.2009 16:24:18
Volker
Ja, Hajo das weis ich, aber gibt es nicht eine andere Möglichkeit, das man "irgendwie" anders an mein Problem geht. Wie kann ich meinen Code über eine Button "starten", der z.b. in dem Bereich Spalte B und C nach Doppelten Eintragungen sucht wenn ich per "nach unten Taste" durch diesen o.g. Bereich scrolle und diese Zelle mit der Hintergrundfarbe gelb zurück gibt?
Hast du da vieleicht eine Lösung oder einen Hinweis?
Anzeige
Zeig doch mal...
09.12.2009 22:40:29
Jens
Hallo
...Deinen gesamten Code, oder besser noch, lad mal die Mappe hoch.
Gruß Jens
AW: Private Sub Worksheet_Change(ByVal Target As Range
10.12.2009 08:13:41
hary
Hallo Volker
ist dann das Worksheet_SelectionChange Ereigniss nicht besser? Reagiert beim wechseln der Zelle.
gruss hary
AW: Private Sub Worksheet_Change(ByVal Target As Range
10.12.2009 11:01:26
Volker
KLasse ansatz, und wie heisst dann die ersste Zeile ? Worksheet_SelectionChange ......?
Also es müsste beim wechsel von einer zur nächsten Zelle "losgehen"
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
11.12.2009 19:35:29
hary
Hi Volker
Im VBA Editor
Userbild
gruss hary
AW: Private Sub Worksheet_Change(ByVal Target As Range
11.12.2009 20:33:43
Volker
Danke Hary, werde es ausprobieren
Schönen Abend
AW: Worksheet_SelectionChange
12.12.2009 18:30:55
Volker
Danke dir, für den Vorschlag.
Leider dachte (brauche) ich es aber, das es gleiche Zellen im Bereich B und C bei doppelter Eingaben mit gelb als Hintergrund setzt. Kannst du da auch helfen?
schönen Abend von Volker
AW: Worksheet_SelectionChange
13.12.2009 10:51:37
Volker
Morgen Hary, ja so habe ich mir es gedacht: Klasse von dir und schönen 3ten Advent
Gruss Volker
AW: Worksheet_SelectionChange
13.12.2009 11:00:42
hary
Moin Volker
Bitte und Danke fuer dier Rueckmeldung.
ebenso schoenen 3. Adv.
gruss hary
;

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

Verwendung von Private Sub Worksheet_Change in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Private Sub Worksheet_Change(ByVal Target As Range)-Funktion in Excel VBA richtig zu nutzen, befolge diese Schritte:

  1. Öffne den VBA-Editor durch Drücken von ALT + F11.

  2. Wähle das entsprechende Arbeitsblatt im Projekt-Explorer aus.

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       ' Dein Code hier
    End Sub
  4. Ersetze ' Dein Code hier durch den spezifischen VBA-Code, den Du ausführen möchtest, wenn sich eine Zelle ändert.

  5. Schließe den VBA-Editor und teste die Funktionalität in Excel.

Falls Du mehrere Private Sub Worksheet_Change-Ereignisse benötigst, solltest Du stattdessen Worksheet_SelectionChange verwenden, um die Reaktion auf Zellenwechsel zu optimieren.


Häufige Fehler und Lösungen

  • Fehler: "Worksheet_Change nicht working"

    • Lösung: Stelle sicher, dass nur ein Private Sub Worksheet_Change(ByVal Target As Range) pro Arbeitsblatt existiert. Mehrere Instanzen könnten zu Konflikten führen.
  • Fehler: Der Code wird nicht ausgelöst

    • Lösung: Überprüfe, ob der Code in der richtigen Arbeitsmappe und im richtigen Tab eingefügt wurde. Der Code muss im VBA-Editor für das spezifische Arbeitsblatt sein.

Alternative Methoden

Wenn Du mehrere Aktionen basierend auf Zellenänderungen steuern möchtest, könnte Private Sub Worksheet_SelectionChange(ByVal Target As Range) eine geeignete Alternative sein. Diese Methode wird bei jedem Wechsel der Zelle aktiviert. Hier ein Beispiel, wie Du diese Methode verwenden kannst:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B:C")) Is Nothing Then
        ' Dein Code hier
    End If
End Sub

Praktische Beispiele

Ein Beispiel für die Verwendung von Private Sub Worksheet_Change könnte das Färben von doppelten Einträgen in Spalte B und C sein:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target
        If Application.WorksheetFunction.CountIf(Range("B:C"), cell.Value) > 1 Then
            cell.Interior.Color = RGB(255, 255, 0) ' Gelb
        End If
    Next cell
End Sub

Dieses Skript färbt die Zellen gelb, wenn doppelte Werte gefunden werden.


Tipps für Profis

  • Nutze Application.EnableEvents = False am Anfang Deines Codes, um zu verhindern, dass der Code erneut ausgelöst wird, während Du Änderungen vornimmst.

    Private Sub Worksheet_Change(ByVal Target As Range)
      Application.EnableEvents = False
      ' Dein Code hier
      Application.EnableEvents = True
    End Sub
  • Dokumentiere Deinen Code gut, damit Du und andere ihn später leichter verstehen können.


FAQ: Häufige Fragen

1. Was ist der Zweck von ByVal Target As Range? ByVal Target As Range gibt an, welche Zelle oder Zellen in der Tabelle geändert wurden. Damit kannst Du gezielt auf diese Änderungen reagieren.

2. Kann ich mehrere Private Sub Worksheet_Change in derselben Arbeitsmappe verwenden? Nein, Du solltest nur eine Instanz pro Arbeitsblatt verwenden. Wenn Du unterschiedliche Aktionen benötigst, ziehe die Verwendung von Worksheet_SelectionChange in Betracht.

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