Änderungsdatum von Zellen automatisiert im Kommentar vermerken
#1
Hallo Gemeinschaft,

ich hab da mal noch einen.

Ich hab da eine Tabelle die ich auf eine DIN A4 Seite angepasst habe.
Viele Zellen wenig Platz.
Hier möchte ich verrichtete Aufgaben abhaken.
Nun würde ich gerne nachträglich nachvollziehen können wann genau ich diese Änderungen gemacht hab.
In der digitalen Version reicht mir völlig.
Es muss also nicht im Ausdruck zu sehen sein, was aus Platzgründen schwierig sein dürfte.

Ich dachte so an eine Datums Uhrzeit Auflistung der, sagen wir, letzten 5 Änderungen vielleicht im Kommentar?  

.xlsx   Neue Projekte.xlsx (Größe: 17,14 KB / Downloads: 5)
Explizit geht es mir hier um die Spalten F-H und J-R
Antworten Top
#2
Moin Frank!
Dafür gibt es die Funktion Änderungen nachverfolgen im Register Überprüfen.
Zeigt zwar "nur" die letzte Änderung in Form eines Kommentars an, aber vielleicht reicht Dir dies ja bereits.
Ansonsten wird es eine umfangreichere VBA-Geschichte.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Moin Ralf,

Das sieht schon mal sehr gut aus.
Kann man das irgendwie dauerhaft aktivieren?
So sind die Grundeinstellungen
   
So stell ich es mir vor
   

Aber vor allem müssen die Änderungen angezeigt werden sobald ich die Datei öffne.
Ohne Geklicke

Gruß Frank
Antworten Top
#4
Hi!
Man kann ja auch auf einem separaten Blatt protokollieren.

"Ohne Klick" nur mittels VBA.
Google mal nach
excel änderungen protokollieren vba

Da gibt es etliche fertige Lösungen.
Beachte: Dies darf nicht zur Überwachung von Mitarbeitern ohne deren Wissen dienen!
Wenn ein Betriebsrat vorhanden ist, muss der das vorher absegnen!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Ok,


ich denke ich werde es bei der Anwendung über 'Änderung nachverfolgen' belassen.
Ich werd halt meine Arbeitsweise der Aufzeichnung etwas anpassen müssen.
Bereiche Kopieren oder Ausschneiden und Einfügen wie ich es sonst oft gehandhabt habe sollte ich unterlassen.
Das macht das ganze recht unübersichtlich und löscht auch größtenteils die mir wichtigen letzten Änderungen der einzel Zellen.
Bei Zeilen und Spalten einfügen und löschen jedoch scheinen all von mir benötigten Informationen erhalten zu bleiben.
Nur Schade das man das nicht dauerhaft eingeschaltet behalten kann. :s
Das mit dem Betriebsrat behalte ich mal im Hinterkopf.
Momentan bearbeite nur ich diese Datei.
Falls sich das mal ändern sollte, (Der Betriebsratsvorsitzende sitzt direkt hinter mir). Blush

Gruß
Frank
Antworten Top
#6
Hallo :20:

Ich habe mit folgendem Code...
Code:
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
 Dim r As Range
 
->Für jede geänderte Zelle
 For Each r In Target
   Call AenderungskennungAlsKommentar(r)
 Next

 Set r = Nothing
End Sub

'********************************************************
Private Function AenderungskennungAlsKommentar(r As Range)
'*** für die geänderte Zelle wird im Kommentar
'*** Benutzerkennung und Änderungszeitpunkt
'*** eingetragen
'*** Ist kein Kommentar vorhanden, wird ein neuer angelegt
 
 Dim s As String, s_user As String
 
->ggf. vorhandenen Kommentar lesen
 On Error Resume Next
 s = r.Comment.Text
 If Err.Number <> 0 Then
   Err.Clear
  ->neuen Kommentar anlegen
   r.AddComment
   r.Comment.Visible = False
   s =
 End If
 On Error GoTo 0
 
->Wenn Kommentar vorhanden, Zeilenumbruch anfügen
 If s <>  Then s = s & vbLf
 
->Letzten Benutzer feststellen
 s_user = ActiveWorkbook.BuiltinDocumentProperties(7)
 
->Datum und Benutzer an Kommentar anfügen
 s = s & Format(Now(), yyyymmdd_hhnn: ) & s_user
 
->Kommentar eintragen
 r.Comment.Text s
 
End Function
...von folgeneder Website...
http://forum.windowsforum.de/thema/excel...gen.47555/
...experimentiert.

Das ist der Stand von 2005

Was muss da für Excel 2007 angeglichen werden?

Es läuft nämlich nicht,
so gar nicht
Antworten Top
#7
Hi!
Warum dort Html-Zeichen in den Code gerutscht sind, weiß wohl nur der dortige Forenbetreiber.  :s

Ersetze & amp ; durch &
Ersetze & lt ; durch <
(die Leerzeichen habe ich hier eingefügt, damit man überhaupt sieht, was ich mein)

(kommen jew. ein paar mal im Code vor)

Zu den Html-eigenen Zeichen siehe:
https://wiki.selfhtml.org/wiki/HTML/Rege...ne_Zeichen

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Undecided
   
Huh
Code:
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Dim r As Range

->Für jede geänderte Zelle
For Each r In Target
  Call AenderungskennungAlsKommentar(r)
Next

Set r = Nothing
End Sub

'********************************************************
Private Function AenderungskennungAlsKommentar(r As Range)
'*** für die geänderte Zelle wird im Kommentar
'*** Benutzerkennung und Änderungszeitpunkt
'*** eingetragen
'*** Ist kein Kommentar vorhanden, wird ein neuer angelegt

Dim s As String, s_user As String

->ggf. vorhandenen Kommentar lesen
On Error Resume Next
s = r.Comment.Text
If Err.Number <;> 0 Then
  Err.Clear
 ->neuen Kommentar anlegen
  r.AddComment
  r.Comment.Visible = False
  s =
End If
On Error GoTo 0

->Wenn Kommentar vorhanden, Zeilenumbruch anfügen
If s <;>  Then s = s &; vbLf

->Letzten Benutzer feststellen
s_user = ActiveWorkbook.BuiltinDocumentProperties(7)

->Datum und Benutzer an Kommentar anfügen
s = s &; Format(Now(), yyyymmdd_hhnn: ) &; s_user

->Kommentar eintragen
r.Comment.Text s

End Function
:s
Antworten Top
#9
Hi!
Du musst schon so ersetzen, wie ich oben schrieb:
   
Dann noch die Code-Kommentare als solche durch REM oder ' am Anfang der Zeilen als solche kenntlich machen,
und das verirrte s = mit s = "" ergänzen.

Ich hab Dir mal die Arbeit abgenommen.
Da nicht mein Code, habe ich ihn nicht getestet.

Modul Modul1
Option Explicit 
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range) 
 Dim r As Range 
 '->Für jede geänderte Zelle 
 For Each r In Target 
   Call AenderungskennungAlsKommentar(r) 
 Next 
 Set r = Nothing 
End Sub 
 
'******************************************************** 
Private Function AenderungskennungAlsKommentar(r As Range) 
'*** für die geänderte Zelle wird im Kommentar 
'*** Benutzerkennung und Änderungszeitpunkt 
'*** eingetragen 
'*** Ist kein Kommentar vorhanden, wird ein neuer angelegt 
 Dim s As String, s_user As String 
'->ggf. vorhandenen Kommentar lesen 
 On Error Resume Next 
 s = r.Comment.Text 
 If Err.Number <> 0 Then 
   Err.Clear 
  '->neuen Kommentar anlegen 
   r.AddComment 
   r.Comment.Visible = False 
   s = "" 
 End If 
 On Error GoTo 0 
'->Wenn Kommentar vorhanden, Zeilenumbruch anfügen 
 If s <> "" Then s = s & vbLf 
'->Letzten Benutzer feststellen 
 s_user = ActiveWorkbook.BuiltinDocumentProperties(7) 
'->Datum und Benutzer an Kommentar anfügen 
 s = s & Format(Now(), "yyyymmdd_hhnn: ") & s_user 
'->Kommentar eintragen 
 r.Comment.Text s 
End Function 

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
Oh man oh man oh man...

...ich werd wohl den Wald vor lauter Bäumen niemals bestaunen dürfen.

Vielen, vielen Dank Ralf

Einen hab ich noch:

Wenn ich folgende Datei in der das Makro laufen soll als *.xlsm abspeichere...:

.xlsx   Neue Projekte.xlsx (Größe: 45,92 KB / Downloads: 6)
...kann ich im VBA Editor (alt+F11) kein Modul einfügen.

Gott weiß wieso, oder halt Ralf

VG
Frank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste