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

Makro start bei wert-Änderung in Zelle

Forumthread: Makro start bei wert-Änderung in Zelle

Makro start bei wert-Änderung in Zelle
29.06.2006 13:43:56
Wolfgang
Hallo,
ich möchte ein Makro starten wenn sich der Wert einer definierten Zelle ändert.
Ich habe das so gelöst:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A1" Then Exit Sub
MsgBox ("Änderung")
End Sub

Das funktioniert aber nur wenn der Wert in A1 eingegeben wird.
Wenn sich aber in A1 eine Formel befindet und sich das Ergebnis daraus auf Grund der Änderung einer anderen Zelle ändert passiert nichts.
Wie schaffe ich das?
Bsp:
A1=B1+C1
Ändere ich B1 dann ändert sich auch A1, das Makro wird aber nicht ausgeführt.
Danke!
Wolfgang
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 13:48:06
Mustafa
Hallo Wolfgang,

Private Sub Worksheet_Calculate()
If Target.Address(0, 0) <> "A1" Then Exit Sub
MsgBox ("Änderung")
End Sub

Sollte Funktionieren.
Viele Grüße aus Köln.
Stopp zurück muss anders sein owT
29.06.2006 13:51:23
Mustafa
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 13:56:15
Mustafa
Hallo Wolfgang,
muss in A1 ein bestimmter Wert sein oder bei jeder Änderung des Wertes in A1 ?
Viele Grüße aus Köln.
Anzeige
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 13:59:51
Wolfgang
Hallo Mustafa,
das Makro soll bei jeder Änderung starten.
Die Prüfung ob die Änderung relevant ist erfolt im gestarteten Makro.
Wenn du eine Idee für einen bestimmten Wert (oder Wertebereich) hast, immer her damit.
Damit kann ich wahrscheinlich auch was anfangen.
Danke!
Wolfgang
Anzeige
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 14:05:53
Mustafa
Hallo Wolfgang,
du kannst dein Makro starten indem du die Worksheet_Calculate() anweisung ausführst.
Da wird bei jeder Änderung in der Tabelle drauf reagiert.
ZB:

Private Sub Worksheet_Calculate()
Call dein Makro
End Sub

AW: Makro start bei wert-Änderung in Zelle
29.06.2006 14:17:03
Wolfgang
Hallo,
das hilft mir nicht weiter.
Ich meinte das Makro soll bei jeder Änderung in Zelle A1 starten, nicht bei Änderung jeder beliebigen Zelle.
Danke!
Wolfgang
Anzeige
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 14:20:26
Wolfgang
Hallo,
das hilft mir nicht weiter.
Ich meinte das Makro soll bei jeder Änderung in Zelle A1 starten, nicht bei Änderung jeder beliebigen Zelle.
Danke!
Wolfgang
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 14:28:59
Mustafa
Hallo Wolfgang,
ohne eine Hilfszelle, wüsste ich keinen weg wie du das machen kannst.
Denn Worksheet_Calculate() reagiert nun mal auf jede Berechnung.
Mit Hilfszelle würde das ungefähr so aussehen:

Private Sub Worksheet_Calculate()
If Range("A1") = Range("a2") Then Exit Sub
Range("A2") = Range("A1")
call dein makro
End Sub

Hierbei ist A2 die Hilfszelle.
Rückmeldung ist immer eine gern gesehene Sache.
Viele Grüße aus Köln.
Anzeige
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 14:32:45
Wolfgang
Hallo,
was wäre VBA ohne Krücken ;-)
Nicht die eleganteste Lösung, aber es funktioniert schonmal.
Danke für deine Hilfe!
Sollte dir oder jemand anderem noch eine bessere Lösung einfallen bitte Posten.
lg
Wolfgang
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 14:34:31
Wolfgang
Hallo,
was wäre VBA ohne Krücken ;-)
Nicht die eleganteste Lösung, aber es funktioniert schonmal.
Danke für deine Hilfe!
Sollte dir oder jemand anderem noch eine bessere Lösung einfallen bitte Posten.
lg
Wolfgang
Anzeige
AW: Makro start bei wert-Änderung in Zelle
03.07.2006 13:54:54
Mustafa
Hallo Wolfgang,
jetzt eine Lösung ohne Hilfszelle,
In einem Modul die Variable X als Public definieren und dann den code ins Blattmodul:

Private Sub Worksheet_Calculate()
If Range("A1") = X Then Exit Sub
X = Range("A1")
call dein makro
End Sub

Viele Grüße aus Köln.
Anzeige
AW: Makro start bei wert-Änderung in Zelle
29.06.2006 15:29:49
u_
Hallo,
warum fragst du nicht einfach die Zellen ab, auf die sich A1 bezieht?
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro automatisch ausführen bei Änderung einer Zelle


Schritt-für-Schritt-Anleitung

Um ein Makro automatisch auszuführen, wenn sich der Wert in einer bestimmten Zelle ändert, kannst Du den folgenden VBA-Code verwenden. In diesem Beispiel wird das Makro ausgeführt, wenn sich der Wert in Zelle A1 ändert.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Im Projektfenster links suche das entsprechende Arbeitsblatt, in dem Du das Makro implementieren möchtest.

  3. Doppelklicke auf das Arbeitsblatt, um das Codefenster zu öffnen.

  4. Füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address(0, 0) = "A1" Then
           MsgBox ("Änderung in A1")
           ' Hier kannst Du Dein Makro aufrufen
           Call deinMakro
       End If
    End Sub
  5. Schließe den VBA-Editor und teste die Funktion, indem Du den Wert in Zelle A1 änderst.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt, wenn sich der Wert in A1 aufgrund einer Formel ändert.

    • Lösung: Verwende den Worksheet_Calculate-Ereignis-Handler, um auf Berechnungsänderungen zu reagieren. Hier ein Beispiel:
    Private Sub Worksheet_Calculate()
        If Range("A1").Value <> X Then
            X = Range("A1").Value
            Call deinMakro
        End If
    End Sub
  • Fehler: Das Makro reagiert auf Änderungen in anderen Zellen.

    • Lösung: Stelle sicher, dass Du die Adresse der Zelle, die Du überwachen möchtest, korrekt angibst.

Alternative Methoden

Eine weitere Möglichkeit, ein Makro automatisch auszuführen, ist die Verwendung einer Hilfszelle. Du kannst eine Hilfszelle nutzen, um den aktuellen Wert von A1 zu speichern und nur dann das Makro auszuführen, wenn sich der Wert ändert.

Hier ein Beispiel:

Private Sub Worksheet_Calculate()
    If Range("A1").Value <> Range("A2").Value Then
        Range("A2").Value = Range("A1").Value
        Call deinMakro
    End If
End Sub

Praktische Beispiele

  1. Makro ausführen, wenn der Wert in Zelle A1 zu einem bestimmten Wert wechselt:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address(0, 0) = "A1" And Target.Value = "Zielwert" Then
           Call deinMakro
       End If
    End Sub
  2. Ein Makro ausführen, wenn sich der Wert in einer Zelle ändert, die von anderen Zellen abhängt:

    Private Sub Worksheet_Calculate()
       If Range("A1").Value <> X Then
           X = Range("A1").Value
           Call deinMakro
       End If
    End Sub

Tipps für Profis

  • Verwende Application.EnableEvents = False, bevor Du Änderungen an Zellen vornimmst, um endlose Schleifen zu vermeiden.

    Application.EnableEvents = False
    ' Änderungen vornehmen
    Application.EnableEvents = True
  • Nutze Worksheet_Change für direkte Eingaben und Worksheet_Calculate für Änderungen durch Formeln.

  • Definiere globale Variablen, um den vorherigen Zustand von Zellen zu speichern.


FAQ: Häufige Fragen

1. Wie kann ich ein Makro ausführen, wenn sich der Wert in einer Zelle ändert? Um ein Makro bei einer Wertänderung in einer Zelle auszuführen, kannst Du den Worksheet_Change-Ereignis-Handler verwenden.

2. Funktioniert das auch mit Formeln in der Zelle? Ja, in diesem Fall solltest Du den Worksheet_Calculate-Ereignis-Handler verwenden, um auf Berechnungsänderungen zu reagieren.

3. Was ist der Unterschied zwischen Worksheet_Change und Worksheet_Calculate? Worksheet_Change wird ausgelöst, wenn eine Zelle direkt bearbeitet wird, während Worksheet_Calculate bei jeder Berechnung der Arbeitsmappe aufgerufen wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige