Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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

Beim Speichern Datum und Benutzer eintragen

Beim Speichern Datum und Benutzer eintragen
08.07.2015 11:28:32
Alexander
Hallo miteinander.
Habe bei euch im Forum folgendes gefunden.
Ich benötige das zweite Makro jedoch ein bisschen abgeändert.
Leider kenne ich mich mit Makros gar nicht aus.
Folgendes war im Beitrag:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim iRow As Integer
With Worksheets("Logs")
iRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(iRow, 1).Value = Application.UserName
.Cells(iRow, 2).Value = Now
.Columns.AutoFit
End With
End Sub

UND:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim lngZeile As Long
Application.EnableEvents = False
With Worksheets("Änderungen_dokumentieren")
Worksheets("Änderungen_dokumentieren").Unprotect ("password")  '

Wäre es jetzt möglich diese zwei Codes zu vereinen?
Ich meine Damit dass der Zweite (Ausführliche) Code nur dann ausgeführt wird wenn gespeichert wird?
Und bei mir wird die Selection der Zelle nach jedem ausführen des Makros verschoben.
d.h. wenn ich was in eine Zelle eintrage,(mit Enter oder Pfeil bestätige) bin ich danach nicht in der nächsten Zelle sondern irgendwo auf dem Arbeitsblatt.
Kann man den Log auf irgendwie 500 Zeilen begrenzen dass dann wieder oben angefangen wird?
Danke euch schon mal im voraus.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim Speichern Datum und Benutzer eintragen
08.07.2015 15:10:27
Michael
Hi Alex,
der zweite Code speichert jede einzelne Änderung in irgendwelchen Zellen ab, das muß man entweder laufend mitschreiben oder es steht vor dem Speichern nicht mehr zur Verfügung.
Die obere Geschichte läßt sich ohne großen Aufwand anpassen, es wird nur eine Zeile eingefügt:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim iRow As Integer
With Worksheets("Logs")
iRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
if iRow>499 then iRow = 2  ' oder 1, falls keine Überschrift vorh.
.Cells(iRow, 1).Value = Application.UserName
.Cells(iRow, 2).Value = Now
.Columns.AutoFit
End With
End Sub
Schöne Grüße,
Michael
P.S.: Ob das Protokollieren *jeder* Änderung sinnvoll ist, ist Ermessenssache - die sinnvollere Alternative ist m.E.s ein Schreibschutz o.ä. mit Passwort. (Wer liest denn die Logs auch?!)
Beim Protokollieren sollten evtl. juristische Fallstricke beachtet werden, siehe http://de.wikipedia.org/wiki/Keylogger

Anzeige
AW: Beim Speichern Datum und Benutzer eintragen
08.07.2015 16:57:12
Alexander
Hallo Miachael
Naja das ist dann Natürlich nicht nett wenn nur der Name drin steht.
Müsste wissen wer eine Zeile ändert, bzw was er/sie geändert hat. (Jede Zeile)
Allso das Grosse Script ist somit für mich einigermassen i.o.
Das Hauptproblem ist wenn ich was ändere und mit Enter/TAb/Pfeil die Eingabe bestätige bin ich nicht im nächsten Excel Zelle, das hat mit dem passwortschutz zu tun, kann den natürlich entfernen da er für mich nicht sehr wichtig ist.
Eine frage noch, der alte(vorherige) wert
.Cells(lngZeile, 6).Value = oldValue 'vorheriger Wert
funktioniert nicht. Hat dies einen speziellen grund? und kann man diese funktion einbinden?
Danke euch im voraus

Anzeige
AW: Beim Speichern Datum und Benutzer eintragen
10.07.2015 17:16:30
Michael
Hallo Alex,
das liegt schlicht daran, daß oldValue nirgends deklariert ist, d.h. Du hast das Skript wahrscheinlich unvollständig heruntergeladen.
oldValue ist offensichtlich als "globale Variable" (das kannst Du recherchieren) deklariert, also etwa ganz am Anfang, *vor* den einzelnen subs: public oldValue as variant
Übrigens wird so, wie es in
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
oldValue = Target
End Sub
codiert ist, wird nur der *Wert* der Zelle als *Wert* in oldValue gespeichert, falls eine Formel drin war, ist sie "weg". Du kannst mal mit Target.formula (und entsprechenden Varianten) experimentieren, solltest aber schreiben: oldValue = "'" & Target.formula
Dadurch wird die Formel als Text angezeigt.
Schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige