Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Änderungsprotokoll für bestimmte Spalte

Änderungsprotokoll für bestimmte Spalte
25.08.2022 17:25:44
Lukaku
Ich kenne mich mit vba kaum aus, brauche aber nun eine Excel, dessen Änderungen protokolliert werden sollen. Ich habe jetzt folgenden Code auf Stack gefunden, brauche aber noch zwei Anpassungen, die ich nicht selbst hinbekomme. Ich brauche nur die Überwachung der Spalte K (K2:K2000), wenn sich dort etwas ändert, dass nur das protokolliert wird. Und wenn ich sich was ändert brauche ich den Inhalt in der Spalte A aus der selben Zeile z.B. wenn sie etwas in der Spalte K33 ändert, dann will ich den Wert A33 als siebte Anzeige in meinem Log.
Ich habe versucht, den Code zu verstehen, aber ich konnte es nicht selbst tun. ich fand den folgenden Code auf Stack Overflow:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RangeValues As Variant, r As Long, boolOne As Boolean, TgValue 'the array to keep Target values (before UnDo)
Dim sh As Worksheet: Set sh = Worksheets("Protokoll")
Dim UN As String: UN = Application.userName
'sh.Unprotect "" 'it should be good to protect the sheet
If sh.Range("A1") = "" Then sh.Range("A1").Resize(1, 6) = _
Array("Time", "User Name", "Changed cell", "From", "To", "Sheet Name")
Application.ScreenUpdating = False                                     'to optimize the code (make it faster)
Application.Calculation = xlCalculationManual
If Target.cells.count > 1 Then
TgValue = extractData(Target)
Else
TgValue = Array(Array(Target.value, Target.Address(0, 0)))  'put the target range in an array (or as a string for a single cell)
boolOne = True
End If
Application.EnableEvents = False                                'avoiding to trigger the change event after UnDo
Application.Undo
RangeValues = extractData(Target)                           'define the RangeValue
putDataBack TgValue, ActiveSheet                            'put back the changed data
If boolOne Then Target.Offset(1).Select
Application.EnableEvents = True
Dim columnHeader As String, rowHeader As String
For r = 0 To UBound(RangeValues)
If RangeValues(r)(0)  TgValue(r)(0) Then
sh.cells(rows.count, 1).End(xlUp).Offset(1, 0).Resize(1, 6).value = _
Array(Now, UN, RangeValues(r)(1), RangeValues(r)(0), TgValue(r)(0), Target.Parent.Name)
End If
Next r
'sh.Protect ""
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub putDataBack(arr, sh As Worksheet)
Dim i As Long, arrInt, El
For Each El In arr
sh.Range(El(1)).value = El(0)
Next
End Sub Function extractData(rng As Range) As Variant
Dim a As Range, arr, count As Long, i As Long
ReDim arr(rng.cells.count - 1)
For Each a In rng.Areas 'creating a jagged array containing the values and the cells address
For i = 1 To a.cells.count
arr(count) = Array(a.cells(i).value, a.cells(i).Address(0, 0)): count = count + 1
Next
Next
extractData = arr
End Function

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 17:29:26
onur
So ein Code ohne die Datei zu posten ist eigentlich sinnlos, denn einen Code zu analysieren, ohne die Tabelle dazu zu haben ist zumindest unnötig umständlich wenn nicht sogar unmöglich.
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 17:44:53
Roman
Hallo Onur,
vielen Dank für deine schnelle Antwort. Anbei ein Test File mit dem Code. Dieser Code protokolliert alle Änderungen in dem Blatt "Eingabemaske" ich benötige jedoch nur Änderungen in der Spalte K. Außerdem benötige ich immer den Inhalt der Spalte A aus der selben Zeile als siebte Anzeige im Protokoll. Wenn zum Beispiel K33 was geändert wurde benötige ich den Inhalt von A33.
https://www.herber.de/bbs/user/154806.xlsm
Anzeige
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 18:46:57
onur
Diese Version funktioniert auch, wenn jemand mehrere Zellen gleichzeitig (Copy&Paste) ändert:
https://www.herber.de/bbs/user/154809.xlsm
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 19:01:02
Roman
Hallo Onur,
vielen vielen vielen Dank!! Es klappt fast alles wie gewünscht, das einzige was leider nicht funktioniert ist die Übernahme des alten Wertes in der Spalte wird dann nichts angezeigt (ist leer). Was kann ich hier tun?
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 19:25:13
onur
Sorry, die neue Version hatte ich nur mit "Multichange" getestet.
https://www.herber.de/bbs/user/154810.xlsm
In Spalte 7 kommt jetzt das neue ID. oder wolltest du das Alte?
Anzeige
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 19:49:18
Roman
Hallo Onur,
Vielen Dank zunächst für deine hilfe und deine Zeit. In der letzten Datei klappt leider gar nichts mehr. Die zweite Datei die du gesendet hast hat fast alles geklappt. Der alte Wert wurde aber leider nicht richtig übernommen. Bspw.: Wenn ich den Status von Grün auf Blau und dann von Blau auf Rot geändert habe (in der selben Zeile) hat er mir Grün auf Rot (also den ersten alten Wert angezeigt.
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 19:53:26
onur
Hääääh? Was für ein Status? Was für grün oder blau? Wovon sprichst du? Hast du eine andere Datei als ich?
Anzeige
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 20:02:16
onur
Wenn du Hilfe willst, solltest du mal etwas zügiger antworten. Ich habe keine Zeit, den ganzen Abend am Rechner zu bleiben und auf Antwort zu warten.
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 20:05:23
Roman
Hallo Onur,
tut mir leid ich hatte gedacht der Code ist dann anpassbar auf meine Excel wenn ich sie anpasse.
Final sieht meine Excel so aus: https://www.herber.de/bbs/user/154813.xlsm
Hier siehst du dass der Status im alten Wert leider immer den allerersten Status drin lässt.
Ich versuche so schnell wie möglich zu antworten
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 20:18:33
Roman
Tut mir wirklich leid dich weiterhin zu nerven der Fehler ist leider noch immer drin
https://www.herber.de/bbs/user/154815.xlsm
Du siehst im Protokoll dass der Alte Status immer falsch angezeigt wird (aller erste Angabe) wenn man in der selben Zeile (Eingabemaske) den Status ändert.
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 20:25:37
onur
Dass du Zelle per Dropdownauswahl ändern willst, davon war ja auch nie die Rede. Der Code war dafür gedacht, dass die Zellen durch manuelle Eingabe geändert werden.
https://www.herber.de/bbs/user/154816.xlsm
Anzeige
AW: Änderungsprotokoll für bestimmte Spalte
25.08.2022 20:29:40
Roman
Hey du bist ein Schatz das ist der Wahnsinn ich sitz an dieser Sache seit einer Woche und ohne dich wahrscheinlich weitere Wochen.
VIELEN VIELEN VIELN DANK!!!!
Gerne !
25.08.2022 20:30:44
onur

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige