gerade habe ich ein Problem,
ich möchte ein Makro ausführen wenn sich der Wert der Zelle L506 über eine Formel ändert.
Im Normalzustand ist der Wert 0. Wird der Wert größer soll ein Makro ausgeführt werden.
Danke für Eure Hilfe.
Gruß Markus
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("L56") 0 Then
MsgBox "L56 hat sich auf " & Range("L56").Value & " geändert"
End If
End Sub
Um ein Makro automatisch auszuführen, wenn sich der Wert in einer Zelle ändert, kannst Du den folgenden Code verwenden. Dieser wird in den VBA-Editor eingefügt. Hier ist, wie Du es machst:
Öffne Deine Excel-Arbeitsmappe und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Doppelklicke im Projektexplorer auf das Arbeitsblatt, in dem Du das Makro ausführen möchtest.
Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("L506")) Is Nothing Then
If Me.Range("L506").Value > 0 Then
' Hier Dein Makro aufrufen
Call Makro1
End If
End If
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Ändere den Wert in der Zelle L506, um das Makro auszuführen.
Makro läuft nicht bei Formelergebnissen: Wenn der Wert in der Zelle L506 durch eine Formel geändert wird, greift das Worksheet_Change
-Ereignis nicht. Stattdessen solltest Du das Worksheet_Calculate
-Ereignis verwenden:
Private Sub Worksheet_Calculate()
If Me.Range("L506").Value > 0 Then
Call Makro1
End If
End Sub
Makro wird nicht ausgeführt: Stelle sicher, dass das Makro, das Du aufrufen möchtest, vorhanden ist und keine Syntaxfehler enthält. Überprüfe auch, ob die Makros in Excel aktiviert sind.
Wenn Du eine andere Methode ausprobieren möchtest, um ein Makro auszuführen, wenn sich der Zellinhalt ändert, kannst Du folgende Ansätze verwenden:
Verwendung von Application.OnTime
: Mit dieser Methode kannst Du das Makro zu bestimmten Zeitpunkten ausführen lassen, was hilfreich sein kann, wenn Du häufige Änderungen in einer Zelle überwachen möchtest.
Datenüberprüfung: Du kannst eine Datenüberprüfung in Excel einrichten, die bestimmte Aktionen auslöst, wenn der Wert in einer Zelle geändert wird, jedoch ist dies limitiert und erfordert oft manuelles Eingreifen.
Hier sind einige Beispiele, wie Du die Makros anpassen kannst:
Benachrichtigung bei Änderung:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("L506")) Is Nothing Then
MsgBox "Der Wert in L506 hat sich geändert!"
End If
End Sub
Makro ausführen bei bestimmten Bedingungen:
Private Sub Worksheet_Calculate()
If Me.Range("L506").Value > 10 Then
Call Makro2
End If
End Sub
Verwende Application.EnableEvents
: Um zu verhindern, dass das Makro in einer Endlosschleife läuft, kannst Du die Ereignisse vorübergehend deaktivieren:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
' Dein Code hier
Application.EnableEvents = True
End Sub
Debugging mit Debug.Print
: Wenn Du Schwierigkeiten hast, Deinen Code zu debuggen, kannst Du Debug.Print
verwenden, um Werte in das Immediate-Fenster zu drucken. So kannst Du besser nachvollziehen, welche Werte Dein Makro hat.
1. Wie kann ich ein Makro ausführen, wenn sich der Wert in einer Zelle ändert?
Du kannst das Worksheet_Change
-Ereignis oder das Worksheet_Calculate
-Ereignis verwenden, je nachdem, ob der Wert direkt eingegeben oder durch eine Formel berechnet wird.
2. Funktioniert das auch in Excel Online? Leider unterstützt Excel Online keine VBA-Makros, sodass diese Funktionen nur in der Desktop-Version von Excel verfügbar sind.
3. Was ist der Unterschied zwischen Worksheet_Change
und Worksheet_Calculate
?
Worksheet_Change
wird ausgelöst, wenn eine Zelle manuell geändert wird, während Worksheet_Calculate
ausgeführt wird, wenn Excel die Arbeitsmappe neu berechnet, z.B. wenn Formeln aktualisiert werden.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen