Ich habe ein Änderungsereignis für Arbeitsblätter erstellt. Wenn die Spalte I geändert wird (Datum hinzugefügt), wird sie in ein neues Blatt eingefügt und gelöscht.Einfügungen in Worksheet_change-Ereignis zulassen
Immer wenn ich jedoch eine Zeile einfüge, wird diese Zeile automatisch übernommen und in das andere Blatt eingefügt und dann gelöscht. Wie kann ich es verhindern, so dass es nur ein Arbeitsblattänderungsereignis tut, solange die Zelle einen Wert hat, damit ich einfügen kann?
Ich dachte, dass ich die IF-Anweisung ein bisschen weiter verschachteln könnte, indem Sie ActiveCell.Value <> ""
überprüfen, aber das ändert sich, wenn die Zelle angeklickt wird.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LastRowCompleted As Long
Dim RowToDelete As Long
RowToDelete = 0
LastRowCompleted = Sheets("completed").Cells(Sheets("completed").Rows.Count, "A").End(xlUp).Row
LastRowCompleted = LastRowCompleted + 1 'Next row after last row
Set KeyCells = Range("I:I")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Application.EnableEvents = False
'Cut and Paste Row
Target.EntireRow.Copy Sheets("completed").Range(LastRowCompleted & ":" & LastRowCompleted)
'Mark to delete row
RowToDelete = Target.EntireRow.Row
Call DeleteRow(RowToDelete)
Application.EnableEvents = True
End If
End Sub
Sub DeleteRow(Row As Long)
If Row > 0 Then
Rows(Row).EntireRow.Delete Shift:=xlUp
End If
End Sub