Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeitstempel bei Änderung einer Zelle

Zeitstempel bei Änderung einer Zelle
22.03.2023 15:56:40
Tobias

Hallo zusammen,

ich habe eine Liste, auf die einige Personen zugreifen und Kommentare eingeben. Die im Blatt Details in Spalte 14 eingegebenen Kommentare werden dann in das Blatt "Kommentare" in Spalte B weggeschrieben. Wird der Kommentar im Blatt Details aktualisiert, wird dieser auch im Blatt "Kommentar" aktualisiert.
Nun ist es so, dass ich die Liste wöchentlich versende und irgendwann nicht mehr weiß, ob der enthaltene Kommentar aktualisiert wurde, oder nicht... daher benötige ich einen Zeitstempel. D.h. Wenn eine erstmalige Eingabe oder Änderung der Kommentar-Zelle im Blatt Details in Spalte 14 erfolgt, dann soll er zu diesem Eintrag einen Zeitstempel erstellen und im Blatt Kommentare in Spalte C zum dazugehörigen Auftrag (Auftragsnummer im Blatt Details in Spalte D bzw. im Blatt Kommentar in Spalte A) dazu spielen.


Also Blatt Kommentare:

Auftragsnummer | Kommentar | Zeitstempel (NEU)

Ich hoffe ich hab's verständlich erklärt und jemand kann mir weiterhelfen :)?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim gefunden As Range
Dim lz As Long
Dim komm_sh As Worksheet
Dim komm_sh2 As Worksheet
Dim oTargetCell As Range
Set komm_sh = Sheets("Kommentare")

For Each oTargetCell In Target.Cells
    'Wird im Blatt "Details" in Spalte 14 ein Kommentar eingegeben, so wird dieser in das Blatt "Kommentare" geschrieben. Updates der Kommentare sind berücksichtigt.
        If oTargetCell.Column = 18 And oTargetCell.Row >= 13 Then
             If Cells(oTargetCell.Row, "D") = "" Then MsgBox "Die eindeutige Nummer fehlt", vbCritical + vbOKOnly, "Abbruch": Cells(oTargetCell.Row, "D").Select: Exit Sub
             Set gefunden = komm_sh.Range("A:A").Find(Cells(oTargetCell.Row, "D"), lookat:=xlWhole) 'erst Kommentar finden
             If Not gefunden Is Nothing Then komm_sh.Rows(gefunden.Row).Delete '+ ggf. löschen
    
             If oTargetCell.Value > "" Then
                 lz = komm_sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile ermitteln
                 Cells(oTargetCell.Row, "D").Copy komm_sh.Cells(lz, 1)   'ID-Nummer neu schreiben
                 oTargetCell.Copy komm_sh.Cells(lz, 2) 'Kommentar neu schreiben
            End If
        End If
    
Next

End Sub


Danke und Gruß

Tobias

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitstempel bei Änderung einer Zelle
22.03.2023 18:58:54
Mathias
Hallo Tobias,

Wenn ich alles richtig verstanden habe, dann musst du nur folgenden Code nach deinen zwei Kopiervorgängen anfügen:
komm_sh.Cells(lz, 3).value = Now()
Sag einfach bescheid, ob ich mich irre oder nicht.

Liebe Grüße
Mathias


Anzeige
AW: Zeitstempel bei Änderung einer Zelle
24.03.2023 10:40:46
Tobias
Hallo Matthias,

perfekt. Genau das was ich brauche. Da habe ich mich wohl selbst etwas blöd angestellt :-).

Grüße

Tobias

Anzeige
Anzeige

Infobox / Tutorial

Zeitstempel in Excel bei Änderung einer Zelle


Schritt-für-Schritt-Anleitung

Um einen Zeitstempel in Excel zu erstellen, wenn eine Zelle geändert wird, kannst Du den folgenden VBA-Code verwenden. Dieser Code wird in das Arbeitsblatt eingefügt, in dem die Änderungen verfolgt werden sollen.

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Suche das entsprechende Arbeitsblatt (z.B. "Details") in der linken Seitenleiste.
  3. Doppelklicke auf das Arbeitsblatt, um das Codefenster zu öffnen.
  4. Füge den folgenden Code ein:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim gefunden As Range
    Dim lz As Long
    Dim komm_sh As Worksheet
    Set komm_sh = Sheets("Kommentare")

    For Each oTargetCell In Target.Cells
        If oTargetCell.Column = 18 And oTargetCell.Row >= 13 Then
             If Cells(oTargetCell.Row, "D") = "" Then MsgBox "Die eindeutige Nummer fehlt", vbCritical + vbOKOnly, "Abbruch": Cells(oTargetCell.Row, "D").Select: Exit Sub
             Set gefunden = komm_sh.Range("A:A").Find(Cells(oTargetCell.Row, "D"), lookat:=xlWhole)
             If Not gefunden Is Nothing Then komm_sh.Rows(gefunden.Row).Delete

             If oTargetCell.Value > "" Then
                 lz = komm_sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
                 Cells(oTargetCell.Row, "D").Copy komm_sh.Cells(lz, 1)
                 oTargetCell.Copy komm_sh.Cells(lz, 2)
                 komm_sh.Cells(lz, 3).Value = Now() ' Zeitstempel einfügen
             End If
        End If
    Next

End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Teste die Funktion, indem Du eine Änderung in der entsprechenden Zelle vornimmst.

Häufige Fehler und Lösungen

  • Fehler: "Die eindeutige Nummer fehlt"
    Lösung: Stelle sicher, dass in der entsprechenden Zelle der Auftragsnummer ein Wert eingetragen ist.

  • Zeitstempel wird nicht aktualisiert
    Lösung: Überprüfe, ob der Code korrekt eingefügt wurde und ob Du in der richtigen Zelle Änderungen vornimmst (Spalte 14).

  • Kommentar wird nicht in die "Kommentare"-Tabelle übertragen
    Lösung: Stelle sicher, dass der Code auf die korrekten Arbeitsblätter verweist und keine Tippfehler in den Tabellennamen vorliegen.


Alternative Methoden

Wenn Du keinen VBA-Code verwenden möchtest, kannst Du auch die Funktion =JETZT() in einer Zelle verwenden. Diese aktualisiert sich jedoch jedes Mal, wenn die Datei berechnet wird, und ist daher weniger zuverlässig für einen statischen Zeitstempel. Eine andere Möglichkeit wäre die Verwendung von Excel-Formeln in Kombination mit Power Automate, um Änderungen zu verfolgen.


Praktische Beispiele

Wenn Du beispielsweise die Auftragsnummer in Spalte D und die Kommentare in Spalte E hast, wird bei jeder Änderung in Spalte E automatisch ein Zeitstempel in Spalte C der "Kommentare"-Tabelle erstellt. So kannst Du auf einen Blick sehen, wann der Kommentar zuletzt aktualisiert wurde.


Tipps für Profis

  • Verwende Application.EnableEvents = False zu Beginn des Codes, um zu verhindern, dass das Makro erneut ausgelöst wird, während Du Zellen kopierst. Vergiss nicht, es am Ende wieder auf True zu setzen.
  • Plane regelmäßige Backups Deiner Excel-Dateien, um Datenverlust zu vermeiden.
  • Experimentiere mit der Formatierung des Zeitstempels, um ihn an Deine Bedürfnisse anzupassen.

FAQ: Häufige Fragen

1. Kann ich den Zeitstempel auch in einer bestimmten Formatierung einfügen?
Ja, Du kannst die Formatierung der Zeitstempelzelle anpassen, indem Du die .NumberFormat-Eigenschaft im VBA-Code verwendest.

2. Funktioniert dieser Code auch in Excel Online?
Der VBA-Code funktioniert nur in der Desktop-Version von Excel, nicht in Excel Online.

3. Kann ich den Zeitstempel für mehrere Zellen gleichzeitig einfügen?
Ja, der Code ist so ausgelegt, dass er für mehrere Zellen funktioniert, solange sie im definierten Bereich geändert werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige