Ziel:Anwenden Zeitstempel auf dynamische Reihe auf Änderungsereignis
Ich mag einen Datum-/Zeitstempel in eine Spalte über die letzte Spalte in der Zeile gesetzt haben, geändert wird, basierend auf einem Änderungsereignis. Der Wert der Zelle, wenn ausgewählt, soll mit dem Wert derselben Zelle verglichen werden, wenn sie nicht mehr das Ziel ist.
Aktuelle Code:
Im Sheet1 Code anzeigen
Private Sub Worksheet_Change(ByVal Target As Range)
'MsgBox "Now: " & Now()
Dim i, j As Integer
Dim k As String
Dim LC As Long
i = Target.Row
j = Target.Column
k = Target.Value
LC = Cells(i, Columns.Count).End(xlToLeft).Column
If Not Cells(i, j).Value = k Then
Cells(i, LC + 1).Formula = Format(Now(), "yyyyMMddhhmmss")
End If
End Sub
Problem:
Nach dem Versuch, diesen Code auszuführen, kann ich keine Ausgabe erhalten. Getestet habe ich MsgBox mit „Now:“ & now(), was mir tut zeigen, dass die Änderung Ereigniscode an der richtigen Stelle ist (ich bemerkte, dass, aber es war, wie ich überprüft, welche sollte erschienen
. ich dachte, dass durch i definieren, j und k, außerhalb der If-Anweisung, dass ich diese Werte speichern könnte und vergleichen Werte von der Auswahl im Vergleich zu, wenn sie nicht ausgewählt
. Frage:
ist der Weg Ich stelle diesen Code unpassend auf, und wenn ja, wie würde ich dies korrigieren, um geeigneter zu sein? Das ist meine Tanne Spielzeit mit Change Events.
Edit1: mehr Einzelheiten zu Ziel, wenn man bedenkt Kommentar von @ScottCraner
Sie testen, ob die Zielzelle oder Zelle, die sich geändert hat, nicht dem Wert entspricht, der darin enthalten ist. Dies liefert immer den Wert false, da die Zielzelle immer dem Zielzellenwert entspricht. Noch eine Anmerkung: Sobald Sie herausgefunden haben, was Sie eigentlich testen möchten, müssen Sie vor dem Vornehmen von Änderungen eine 'application.EnableEvents = False 'einfügen und danach' application.EnableEvents = True', damit es nicht in eine Schleife geht wird die Reihe mit Daten füllen, bis Sie keine Spalten mehr haben. –
@ScottCraner Danke dafür. Ich habe nicht einmal darüber nachgedacht, die Ereignisse dort abzustellen (töricht bin ich). Ich versuche sicherzustellen, dass meine anfänglich ausgewählte Zelle immer noch dieselbe ist, wenn ich diese Zelle verlasse, vorausgesetzt, ich benutze den Abwärtspfeil und überkreuze einige Zellen. – Cyril
Das Ereignis "workshape_change" wird nur ausgelöst, wenn ein Zellenwert geändert wird, nicht die Auswahl. Nach der Änderung hat die Bereichsvariable Target alle Attribute der Zelle, die sich geändert hat, einschließlich ihres neuen Werts, nicht des alten. Das Alte ist weg. –