Hallo zusammen,
ich hoffe mir kann hier ein SuperBrain irgendwie weiter helfen. Da ich nicht so programmieraffin bin, komme ich einfach seit Tagen nicht weiter.
Folgendes Problem: ich möchte gerne, dass pro Sheet in einem Excel Workbook jeweils angezeigt wird wer und wann es zuletzt bearbeitet hat.
Folgender Code funktioniert natürlich einwandfrei, bloß wird er bei jeder Änderung sofort ausgeführt und leert den Cache:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Sh.Range("B1").Value = Date
Sh.Range("C1").Value = Time
Sh.Range("D1").Value = Application.UserName
Application.EnableEvents = True
End Sub
Das ist etwas bzw. SEHR unforteilhaft.
Folgender Code funktioniert natürlich auch super,
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Sheet1").Select
Range("F1").Value = Application.UserName
Range("B1").Value = Strings.Format(Now, "DD.MM.YYYY")
Range("D1").Value = Strings.Format(Now, "hh:mm")
ActiveWorkbook.Save
End Sub
Allerdings werden die Werte auch aktualisiert, wenn man nichts an der Datei geändert hat, sondern diese bloß geöffnet hat und wieder schließt.
Mir wurde hier im Thread schon „Workbook_BeforeSafe“ vorgeschlagen. Das geht aber auch nicht, da ich bereits „Workbook_SheetChange” verwende. Beides gleichzeitig ist nicht möglich.
Besteht die Möglichkeit das irgendwie zu kombinieren? Ich möchte gerne, dass das Makro pro SheetChange erst beim Schließen der Datei (um sicher zu gehen, dass der Cache bis dahin erhalten bleibt) ausgeführt wird und auch wirklich nur, wenn Änderungen vorgenommen wurden.
Ich weiss einfach nicht mehr weiter.
Ihr würdet mir ENORM weiterhelfen.
Vielen Dank im Voraus!!!
Gruß
Leonard (leider nicht so schlau wie der Hofstadter)
|