Ermitteln Sie durch Bearbeiten, ob der Zellenwert tatsächlich geändert wurde

Worksheet_Change Wird ausgelöst, wenn ein Zellenwert geändert wird (was ich möchte), wird jedoch auch ausgelöst, wenn Sie eine Zelle so eingeben, als ob Sie sie bearbeiten möchten, aber den Wert der Zelle nicht tatsächlich ändern (und das möchte ich nicht tun) ).

Angenommen, ich möchte Zellen, deren Wert geändert wurde, schattieren. Also codiere ich das:

Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Interior.ColorIndex = 36
End Sub

Testen Sie jetzt meine Arbeit: Ändern Sie die Zelle A1, und die Zelle wird hervorgehoben. Das ist das gewünschte Verhalten. So weit, ist es gut. Doppelklicken Sie dann auf B1, aber ändern Sie den Wert dort nicht und klicken Sie dann auf C1. Sie werden bemerken, dass B1 hervorgehoben wird! Und das ist nicht das gewünschte Verhalten.

Muss ich die hier beschriebenen Methoden zum Erfassen des alten Werts durchgehen und dann den alten mit dem neuen vergleichen, bevor ich die Zelle hervorhebe? Ich hoffe auf jeden Fall, dass mir etwas fehlt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage