Wenn das Ereignis ausgelöst wird möchte ich außerdem herausfinden, in welcher Zelle sich etwas geändert hat.
Danke für die Antworten schon im Voraus!
private Sup Worksheet_Calculate()
static WertA1 as variant
If Range("A1").Value WertA1 then
Msgbox "Wertänderung in A1"
WertA1=Range("A1").Value
end if
End Sub
gruß Daniel
Öffne den Visual Basic for Applications (VBA) Editor:
ALT + F11, um den VBA-Editor zu öffnen.Wähle das entsprechende Arbeitsblatt:
Füge den Code für das Worksheet_Change-Ereignis hinzu:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Wert geändert in: " & Target.Address
End Sub
Speichere die Datei:
Teste den Code:
Keine Meldung erscheint:
Makros sind deaktiviert:
Das Calculate-Ereignis wird nicht erkannt:
Change-Ereignis auslösen. In diesem Fall solltest du das Worksheet_Calculate-Ereignis verwenden.Überwachung mehrerer Zellen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then
MsgBox "Änderung in überwachten Zellen!"
End If
End Sub
Verwendung von statischen Variablen:
Beispiel für das Überprüfen einer bestimmten Zelle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
MsgBox "Wert in A1 geändert!"
End If
End Sub
Verwenden des Worksheet_Calculate-Ereignisses:
Private Sub Worksheet_Calculate()
MsgBox "Das Arbeitsblatt wurde neu berechnet!"
End Sub
Verwende Arrays für effiziente Überwachung:
Vermeide unnötige Berechnungen:
Nutze Application.EnableEvents:
Application.EnableEvents = False am Anfang des Codes und Application.EnableEvents = True am Ende, um rekursive Aufrufe zu vermeiden.1. Wie kann ich feststellen, wann eine Zelle zuletzt geändert wurde?
Du kannst die Worksheet_Change-Ereignisprozedur verwenden, um den aktuellen Zeitpunkt in einer anderen Zelle zu speichern.
2. Was ist der Unterschied zwischen Change und Calculate?
Change wird ausgelöst, wenn ein Zellenwert manuell geändert wird, während Calculate aufgerufen wird, wenn Excel eine Neuberechnung durchführt.