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

worksheet_change läuft nicht

Forumthread: worksheet_change läuft nicht

worksheet_change läuft nicht
Joachim
Hallo,
ich hab eine Tabelle mit 2 Buttons, auf der mir die 3 bedingten Formatierungen nicht reichen. Daher arbeite ich mit worksteet_calculate, um weitere Bedingungen zu prüfen, um Zellen einzufärben.
Jetzt will ich noch zusätzlich, wenn sich Zelle R1 ändert (manuelle Eingabe bzw. wird über Drehfeld gesteuert), ein anderes makro (sv_holen) starten. Aber anscheinend wird das worksheet_change garnicht ausgeführt. (alles steht natürlich im Tabellenmodul).
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error GoTo fehler
If Target.Address = "$R$1" Then
MsgBox "geändert"
Call sv_holen
End If
fehler:
Application.EnableEvents = True
End Sub
Die Msgbox erscheint nicht!
Wird nur worksheet_calculate ausgeführt und worksheet_change 'vergessen'?
Gruss
Joachim
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: worksheet_change läuft nicht
29.07.2010 13:25:29
Klaus
Hallo Joachim,
wo / wann verlässt du denn das worksheet? Worksheet_Change greift in dem Moment, in dem du zB von Tabelle1 in Tabelle2 wechselst.
Was du suchst, ist:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Grüße,
Klaus M.vdT.
AW: worksheet_change läuft nicht
29.07.2010 13:30:10
Rudi
Hallo Klaus,
Worksheet_Change greift in dem Moment, in dem du zB von Tabelle1 in Tabelle2 wechselst. 

das ist Quatsch!
Du verwechselst das mit Deactivate. Change greift, wenn auf dem Sheet Zellen geändert werden.
Gruß
Rudi
Anzeige
AW: worksheet_change läuft nicht
29.07.2010 13:43:11
Klaus
Hallo Rudi,
danke fürs richtigstellen, habs grad geprüft und lag in der Tat voll daneben.
Hallo Joachim,
sorry für die Verwirrung. Aber mit Rudi's Tipp sollte es klappen?
AW: worksheet_change läuft nicht
29.07.2010 13:35:49
Joachim
Hallo Klaus,
hab in 'Selection' geändert, es passiert aber immer noch nichts (keine Msgbox).
Auf der Tabelle 'Checkliste' läuft worksheet_calculate un die 2 Buttons. Ändere ich den Wert in R1, soll Makro sv_holen starten. Dieses Makro aktivert ein anderes Blatt (SV), holt per sql Daten aus einer MySQL-DB und schreibt sie in SV. Diese Werte will ich dann wieder in der Checkliste anzeigen.
Ich hatte schon den Markoaufruf sv_holen im calculate, dann war es ne Endlosschleife.
Gruss
Joachim
Anzeige
AW: worksheet_change läuft nicht
29.07.2010 13:31:56
Rudi
Hallo,
die Änderung eines Zellwertes durch ein Drehfeld löst, genau wie eine Berechnung, kein Change-Ereignis aus.
Du könntest zusätzlich noch eine Prozedur für das Drehfeld schreiben.
Gruß
Rudi
AW: worksheet_change läuft nicht
29.07.2010 13:48:00
Joachim
Hallo,
wie gesagt, ich ändere R1 entweder mit Drehfeld ODER mit direkter Eingabe.
Direkte Eingabe funktioniert jetzt (komischerweise).
Wie würde die Przedur für's Drehfeld aussehen?
Gruss
Joachim
Anzeige
AW: worksheet_change läuft nicht
29.07.2010 14:08:15
Joachim
Hallo,
bin selbst drauf gekommen, wie ich den Spinbutton abfrage.
Danke nochmal.
Joachim
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Fehlerbehebung bei worksheet_change in Excel


Schritt-für-Schritt-Anleitung

Um das Problem mit worksheet_change zu beheben, folge diesen Schritten:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Das richtige Modul wählen: Navigiere zu Microsoft Excel Objekte und wähle das entsprechende Arbeitsblatt aus.

  3. Code einfügen: Füge den folgenden Code ein, um das Worksheet_Change-Ereignis zu konfigurieren:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        On Error GoTo fehler
        If Target.Address = "$R$1" Then
            MsgBox "geändert"
            Call sv_holen
        End If
    fehler:
        Application.EnableEvents = True
    End Sub
  4. Überprüfen der Bedingungen: Stelle sicher, dass Target.Address korrekt definiert ist und die Zelle R1 tatsächlich geändert wird.

  5. Testen der Funktion: Ändere den Wert in Zelle R1 und überprüfe, ob die MsgBox erscheint.


Häufige Fehler und Lösungen

  • worksheet_change funktioniert nicht:

    • Stelle sicher, dass das Makro im richtigen Arbeitsblattmodul eingetragen ist und nicht in einem allgemeinen Modul.
  • MsgBox erscheint nicht:

    • Prüfe, ob Application.EnableEvents korrekt gesetzt ist. Wenn es auf False gesetzt bleibt, wird das Change-Ereignis nicht ausgelöst.
  • Änderungen durch Drehfeld:

    • Das Change-Ereignis wird nicht durch Änderungen ausgelöst, die durch ein Drehfeld (SpinButton) vorgenommen werden. Hier musst du eine separate Prozedur für das Drehfeld erstellen.

Alternative Methoden

Wenn das worksheet_change-Ereignis nicht funktioniert, kannst du folgende Alternativen in Betracht ziehen:

  • Worksheet_SelectionChange verwenden: Diese Methode reagiert, wenn der Benutzer von einer Zelle in eine andere wechselt. Hier ein Beispiel:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Target.Calculate
    End Sub
  • Direkte Eingaben überwachen: Du kannst das SpinButton-Steuerelement mit einer eigenen Prozedur verknüpfen, um auf Änderungen zu reagieren.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Implementierung:

  1. Verwendung von Worksheet_Change für mehrere Zellen:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Me.Range("A1:B10")) Is Nothing Then
            ' Aktionen durchführen
        End If
    End Sub
  2. Anpassung für das Drehfeld:

    Private Sub SpinButton1_Change()
        Dim newValue As Integer
        newValue = SpinButton1.Value
        Range("R1").Value = newValue
        Call sv_holen ' Das Makro aufrufen
    End Sub

Tipps für Profis

  • Debugging: Verwende Debug.Print innerhalb deiner VBA-Prozeduren, um den Ablauf zu verfolgen und herauszufinden, wo der Code möglicherweise stoppt.

  • Event-Handling optimieren: Denke daran, Application.EnableEvents am Ende deiner Prozedur immer wieder auf True zu setzen, um weitere Ereignisse zuzulassen.

  • Vermeide Endlosschleifen: Wenn du sv_holen im Calculate-Ereignis aufrufst, stelle sicher, dass es keine Rückkopplung zu Change-Ereignissen gibt.


FAQ: Häufige Fragen

1. Warum reagiert mein Code nicht, wenn ich eine Zelle ändere?
Es könnte sein, dass der Code im falschen Modul steht oder dass Application.EnableEvents nicht korrekt konfiguriert ist.

2. Wie kann ich ein Drehfeld in VBA ansprechen?
Du musst eine separate Prozedur für das Drehfeld erstellen, um die Änderungen zu verfolgen und entsprechende Aktionen durchzuführen.

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