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

Worksheet_Change wird nicht ausgelöst

Forumthread: Worksheet_Change wird nicht ausgelöst

Worksheet_Change wird nicht ausgelöst
02.07.2004 13:56:06
Mario
Hallo,
ich habe ein Problem mit dem Worksheet_Change-Ereignis. Ich bin ziemlich neu eingestiegen, was die Ereignis-Programmierung angeht.
Ich habe aber in meiner Arbeitsmappe auf der betreffenden Tabelle folgenden Simpel-Code eingegeben, da ich Probleme mit einem anderen Change-Makro hatte.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox Target.Address
End Sub

Bei einer Eingabe im Arbeitsblatt bekomme ich aber keine Meldung.
Wie kann ich diesem Problem begegnen? Muss ich irgendwo anders eine Einstellung treffen?
Vielen Dank im voraus für eure Hilfe
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change wird nicht ausgelöst
Ulf
Hast die Mappe ohne Makroaktivierung gestartet, z.B. Sicherheit auf hoch?
Was passiert nach Excelneustart, auch nichts?
Ulf
AW: Worksheet_Change wird nicht ausgelöst
Boris
Hi,

Sub An()
Application.EnableEvents = True
End Sub

Lass mal kurz laufen (wobei es das nach Excelneustart auch wieder tut...).
Grüße Boris
Anzeige
AW: Worksheet_Change wird nicht ausgelöst
02.07.2004 16:32:53
Mario
Hallo Boris,
habe das makro einmal gestartet Excel einmal neu hochgefahren und siehe da:
Die Meldung findet statt, das Makro läuft.
Danke für die Antwort.
Frage: Muss ich jetzt im Workbook_Open die EnableEvents immer auf True setzen?
Oder funktioniert das jetzt immer?
Mario
Anzeige
AW: Worksheet_Change wird nicht ausgelöst
Ulf
"Frage: Muss ich jetzt im Workbook_Open die EnableEvents immer auf True setzen?
Oder funktioniert das jetzt immer?"
Musst du nicht. Du hast bestimmt mit Makros experimentiert, die das
auf False gesetzt haben und nicht wieder zugestellt haben.
Ulf
;

Forumthreads zu verwandten Themen

Anzeige

Infobox / Tutorial

Worksheet_Change in Excel: Probleme lösen und richtig anwenden


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und wechsle zu dem Arbeitsblatt, in dem du das Worksheet_Change-Ereignis verwenden möchtest.

  2. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge den Code ein:

    • Wähle im Projektfenster das entsprechende Arbeitsblatt aus.
    • Füge den folgenden Code in das Codefenster ein:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       MsgBox Target.Address
    End Sub
  4. Aktiviere Makros:

    • Stelle sicher, dass die Makros aktiviert sind. Gehe dazu zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere Makros.
  5. Teste den Code:

    • Gehe zurück zu deinem Arbeitsblatt und ändere eine Zelle. Du solltest eine Meldung mit der Adresse der Zelle sehen.

Häufige Fehler und Lösungen

  • Fehler: Worksheet_Change funktioniert nicht

    • Lösung: Überprüfe, ob du die Datei ohne Makroaktivierung gestartet hast. Stelle sicher, dass in den Sicherheitseinstellungen die Makros aktiviert sind.
  • Fehler: Es wird keine Meldung angezeigt

    • Lösung: Führe das Makro Application.EnableEvents = True aus, um sicherzustellen, dass Ereignisse aktiviert sind. Dies kann auch nach einem Neustart von Excel erforderlich sein.

Alternative Methoden

  • Verwendung von Workbook_Open: Du kannst das folgende Makro im ThisWorkbook-Modul verwenden, um sicherzustellen, dass EnableEvents immer auf True gesetzt wird:

    Private Sub Workbook_Open()
       Application.EnableEvents = True
    End Sub
  • Erstellen von benutzerdefinierten Ereignissen: Du kannst auch eigene Ereignisse in VBA programmieren, um spezifische Aktionen auszulösen, wenn sich Werte auf deinem Arbeitsblatt ändern.


Praktische Beispiele

  • Beispiel 1: Zelle ändern und Nachricht anzeigen

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
          MsgBox "Der Wert in A1 wurde geändert!"
      End If
    End Sub
  • Beispiel 2: Automatisches Ausfüllen einer Zelle

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      If Not Intersect(Target, Me.Range("B1")) Is Nothing Then
          Me.Range("C1").Value = Target.Value * 2
      End If
    End Sub

Tipps für Profis

  • Verwende Application.EnableEvents: Stelle sicher, dass du den Status von EnableEvents anpasst, besonders wenn du viele Makros hast, die darauf basieren.

  • Debugging: Nutze Debug.Print in deinem Code, um Werte in das Immediate-Fenster auszugeben. Dies hilft dir, Fehler leichter zu identifizieren.

  • Optimierung: Reduziere die Anzahl der MsgBox-Aufrufe in deinem Code, um die Benutzererfahrung zu verbessern. Nutze stattdessen Statusleisten oder andere Formate zur Benachrichtigung.


FAQ: Häufige Fragen

1. Warum wird Worksheet_Change nicht ausgelöst? Es kann an deaktivierten Makros oder an der Verwendung von Application.EnableEvents = False in einem anderen Makro liegen. Stelle sicher, dass die Ereignisse aktiviert sind.

2. Muss ich EnableEvents jedes Mal aktivieren? Nicht zwingend. Wenn du sicherstellst, dass kein Makro EnableEvents auf False setzt, sollte es immer aktiv bleiben. Es ist jedoch eine gute Praxis, bei jedem Öffnen der Arbeitsmappe die Einstellung zu überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige