Änderungen Dokumentieren Nr2

Bild

Betrifft: Änderungen Dokumentieren Nr2
von: Alexander Bösch
Geschrieben am: 21.08.2015 15:58:20

Hallo Leute
Habe im Beitrag schon ein paar fragen gestellt nun habe ich alles eingefügt und alles passt.
https://www.herber.de/forum/archiv/1432to1436/t1435248.htm
Jetzt sind wir bei Zeile 499 und jetzt wird jedoch nur noch die Zeile 2 beschrieben.


Könnt Ihr mir noch ein bisschen helfen?
Gruss ALex 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Dim lngZeile As Long
 Application.EnableEvents = False
 With Worksheets("Änderungen_dokumentieren")
 lngZeile = .Range("A65536").End(xlUp).Row + 1
     If lngZeile > 499 Then lngZeile = 2 ' oder 1, falls keine Überschrift vorh.
 .Cells(lngZeile, 1).Value = Environ("UserName") 'Änderungen_dokumentieren
 .Cells(lngZeile, 2).Value = Date 'Datum
 .Cells(lngZeile, 3).Value = Time 'Zeit
 .Cells(lngZeile, 4).Value = Sh.Name 'Blattname, auf dem geändert wurde
 .Cells(lngZeile, 5).Value = Target.Address 'Zelle der Änderung
 .Cells(lngZeile, 6).Value = oldValue 'vorheriger Wert
 .Cells(lngZeile, 7).Value = Target.Value 'neuer Eintrag
 End With
 
 Application.EnableEvents = True
 End Sub

Bild

Betrifft: AW: Änderungen Dokumentieren Nr2
von: Michael
Geschrieben am: 21.08.2015 16:29:33
Hi Alex,
es wäre mir lieber gewesen, wenn Du meinen Vorschlag zur Ermittlung der untersten Zeile übernommen hättest...

[DeineVariable] = .Cells(Rows.Count, 1).End(xlUp).Row + 1

... oder so, wenn Dir Range besser gefällt ...
lngZeile = .Range("A" & Rows.Count).End(xlUp).Row + 1
...denn das ist völlig unabhängig von der Excel-Version.
Aber egal.
Das Problem ist mir völlig logisch: durch das Schreiben der neuen Werte in Zeile 2 wird ja die Anzahl der beschriebenen Zeilen nicht geändert, d.h. es sind dann immer mehr als 499.
Am besten ist, Du schreibst den Wert unter die unterste, ermittelte Zeile und löschst anschließend die Zeile 2.
Ich denke, das ist zeitkritisch: wenn Du bei jeder Änderung löschst, hat Excel reichlich zu tun!
Deshalb solltest Du vielleicht gleich immer 50 Zeilen in einem Rutsch löschen oder so.
Also etwa so (ungetesteter Ausschnitt):
With Worksheets("Änderungen_dokumentieren")
 lngZeile = .Range("A" & Rows.Count).End(xlUp).Row + 1
 If lngZeile > 499 Then 
    .Rows("2:50").Delete
    lngZeile = .Range("A" & Rows.Count).End(xlUp).Row + 1
 end if
 .Cells(lngZeile, 1).Value = Environ("UserName") 'Änderungen_dokumentieren
 .Cells(lngZeile, 2).Value = Date 'Datum
 .Cells(lngZeile, 3).Value = Time 'Zeit
 .Cells(lngZeile, 4).Value = Sh.Name 'Blattname, auf dem geändert wurde
 .Cells(lngZeile, 5).Value = Target.Address 'Zelle der Änderung
 .Cells(lngZeile, 6).Value = oldValue 'vorheriger Wert
 .Cells(lngZeile, 7).Value = Target.Value 'neuer Eintrag
 End With
Schöne Grüße,
Michael

Bild

Betrifft: AW: Änderungen Dokumentieren Nr2
von: Alexander Bösch
Geschrieben am: 21.08.2015 16:42:31
Danke Michael
Ja habe gedacht das ist was ganz anderes, Entschuldigung.
Habe jetzt deine Version vom ersten Forumeintrag genommen.
Die Funktioniert super ...danke.
Somit erledigt

Bild

Betrifft: freut mich, danke für die Rückmeldung owT
von: Michael
Geschrieben am: 21.08.2015 16:53:29


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Änderungen Dokumentieren Nr2"