ich habe eine Datei, wo folgender Code im Hintergrund liegt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC, rg As Range
Application.EnableEvents = False
For Each rC In Target
If rC.Value = Worksheets(ActiveSheet.Name & " (2)").Cells(rC.Row, rC.Column).Value Then
Worksheets(ActiveSheet.Name & " (2)").Cells(rC.Row, rC.Column).Copy
rC.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
_
False
Else
rC.FormatConditions.Delete
rC.Interior.ColorIndex = 6
End If
Next rC
If Not Intersect(Target, Columns("H:H")) Is Nothing Then
For Each rg In Target
If Len(rg.Value) > 4 Then
rg.Value = Right(rg.Value, 4)
End If
Next rg
End If
Application.EnableEvents = True
End Sub
Zur Erklärung:
Ich habe ein Blatt und eine (versteckte) Kopie des Blattes. Sobald jemand einen Teil des Blattes ändert, wird das Blatt mit der Kopie verglichen und bei ungleichheit wird auf dem Blatt die Zelle gelbmakiert. Sobald der ursprüngliche Wert wieder da steht, wird die Zelle wieder weiß. Des Weiteren werden dabei auch "bedingte Formatierungen" gelöscht und wiederhergestellt.
Dazu werden Eingaben in der Spalte "H" auf die letzten 4 Zeichen reduziert.
Das lief nun alles auch wunderbar....nun habe ich aber mal geschaut was passiert, wenn manganze Zeilen einfügt und wieder löscht. Beim einfügen passierte nichts schlimmeres, aber beim löschen ging das makro dann jede Zeile durch bis es zur letzten Zeile kommt, danach meckert das Makro dann auch noch an folgernder Code Zeile: If Len(rg.Value) > 4 Then
So, hat jemand 'ne Idee, woran das genau liegt und wie man es umgehen könnte? Kann man es vielleicht umgehen, in dem man sagt, dass wenn eine Zeile gelöscht/eingefügt wird, dass dieses auch bei der Kopie geschehen soll?
Hat jemand einen Plan? Wäre sehr sehr dankbar!
Beste Grüße
Gordon