Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum und Benutzer letzte Änderung in Spalte

Datum und Benutzer letzte Änderung in Spalte
25.02.2019 20:27:16
Janina
Hallo zusammen,
ich bin auf der Suche nach einem Makro, dass mir anzeigt, wer zuletzt wann eine Änderung in einer Spalte meiner Tabelle vorgenommen hat.
Von Spalte A-Q können meine Kollegen Änderungen vornehmen, das Datum soll in Spalte S und Name der Person in Spalte T via Makro aufgeführt werden.
In jeder Spalte meiner Tabelle.
Ich habe im Forum schon eine fast passende Lösung gefunden, allerdings bezieht das Makro sich nur auf eine Zelle, wenn ich den Bereich erweitere wandert auch die Angabe Name und Datum weiter.
Ich habe schon ziemlich viel herumprobiert, komme aber nicht weiter, da ich noch recht neu in dem Thema bin, ich werde schon ganz verrückt.
Kann mir jemand weiterhelfen?
https://www.herber.de/forum/archiv/1576to1580/1578555_Datum_und_Benutzer_letzte_Aenderung_in_Zelle.html#bottom

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z
On Error GoTo Fehler
If Not Intersect(Range("B:B"), Target) Is Nothing Then
If Target.Row = 1 Then Exit Sub
For Each z In Target
If z.Offset(0, -1)  "" Then
Application.EnableEvents = False
z.Offset(0, 1) = Format(Date, "DD.MM.YYYY")
z.Offset(0, 2) = Environ("Username")
End If
Next
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Datum und Benutzer letzte Änderung in Spalte
25.02.2019 20:36:46
Sepp
Hallo Janina,
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range
  
  On Error GoTo Fehler
    
  If Not Intersect(Range("A:Q"), Target) Is Nothing Then
    Application.EnableEvents = False
    If Target.Row > 1 Then
      For Each rng In Intersect(Range("A:Q"), Target)
        Cells(rng.Row, 19) = Format(Date, "DD.MM.YYYY")
        Cells(rng.Row, 20) = Environ("Username")
      Next
    End If
  End If
    
Fehler:
  Application.EnableEvents = True
  If Err.Number <> 0 Then MsgBox "Fehler: " & _
    Err.Number & vbLf & Err.Description: Err.Clear
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Datum und Benutzer letzte Änderung in Spalte
25.02.2019 20:37:37
Werner
Hallo Janina,
so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Range
On Error GoTo Fehler
If Target.Row = 1 Then Exit Sub
If Not Intersect(Range("A:Q"), Target) Is Nothing Then
For Each z In Target
Application.EnableEvents = False
Cells(z.Row, 19) = Now
Cells(z.Row, 20) = Environ("Username")
Next
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Ich hab die Abfrage auf ungleich leer raus gemacht, so wird auch protokolliert wenn eine Zelle im Bereich geleert wird.
Gruß Werner
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum und Benutzer letzte Änderung in Spalte


Schritt-für-Schritt-Anleitung

Um das Datum und den Benutzer der letzten Änderung in einer Excel-Tabelle zu protokollieren, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne die Excel-Datei, in der du die Änderungen protokollieren möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Wähle im Projektfenster das entsprechende Arbeitsblatt aus, in das du den Code einfügen möchtest.

  4. Kopiere den folgenden Code und füge ihn in das Code-Fenster ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim z As Range
       On Error GoTo Fehler
       If Not Intersect(Range("A:Q"), Target) Is Nothing Then
           Application.EnableEvents = False
           For Each z In Target
               Cells(z.Row, 19) = Now ' Datum der letzten Änderung
               Cells(z.Row, 20) = Environ("Username") ' Benutzername
           Next z
       End If
    Fehler:
       Application.EnableEvents = True
       If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    End Sub
  5. Schließe den VBA-Editor und speichere deine Datei als Excel-Arbeitsmappe mit Makros (*.xlsm).

  6. Teste die Funktion, indem du in den Zellen A bis Q Änderungen vornimmst. Das Datum und der Benutzername sollten automatisch in den Spalten S und T angezeigt werden.


Häufige Fehler und Lösungen

  • Fehler bei der Ausführung des Makros: Überprüfe, ob die Datei im richtigen Format gespeichert ist (*.xlsm) und dass Makros in deinen Excel-Einstellungen aktiviert sind.
  • Datum wird nicht aktualisiert: Stelle sicher, dass die Zellen in den Spalten S und T nicht durch andere Formeln oder Daten blockiert sind.
  • Benutzername wird nicht angezeigt: Überprüfe, ob du in Windows mit einem Benutzernamen angemeldet bist, der von Excel erkannt wird.

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion JETZT() in einer Zelle nutzen, um das aktuelle Datum und die Uhrzeit anzuzeigen, jedoch wird dies nicht automatisch aktualisiert, wenn eine Änderung vorgenommen wird. Eine weitere Möglichkeit wäre, die Funktion ÄNDERUNG() zu verwenden, um die letzte Änderung zu protokollieren, jedoch ist diese in Excel nicht standardmäßig verfügbar.


Praktische Beispiele

  1. Datums- und Benutzerprotokoll für eine Projektübersicht:

    • Erstelle eine Excel-Tabelle für Projektfortschritte. Verwende das oben genannte Makro, um automatisch das letzte Änderungsdatum und den Bearbeiter in den entsprechenden Spalten anzuzeigen.
  2. Arbeitszeittabelle:

    • In einer Tabelle zur Erfassung der Arbeitsstunden kannst du das Makro nutzen, um zu dokumentieren, wann und von wem die Stunden angepasst wurden.

Tipps für Profis

  • Du kannst das Makro anpassen, um nur spezifische Zellen oder Bereiche zu überwachen, indem du die Range()-Funktion entsprechend änderst.
  • Nutze Format(Date, "DD.MM.YYYY"), um das Datum in einem bestimmten Format anzuzeigen.
  • Überlege, zusätzliche Funktionen einzufügen, wie z.B. das Speichern der letzten Änderungen in einem separaten Protokollblatt.

FAQ: Häufige Fragen

1. Frage
Wie kann ich das Datum der letzten Änderung ohne VBA anzeigen?
Antwort: Leider gibt es keine native Excel-Funktion, die das Datum der letzten Änderung ohne VBA anzeigt. VBA ist der effektivste Weg, um dieses Ziel zu erreichen.

2. Frage
Kann ich das Makro anpassen, um nur bestimmte Spalten zu überwachen?
Antwort: Ja, du kannst die Zeile If Not Intersect(Range("A:Q"), Target) Is Nothing Then ändern, um nur die gewünschten Spalten anzugeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige