Hallo,
erst mal zwei Vorbemerkungen zur praktischen Realisierung:
Für die Protokollierung kannst du die Prozedur
Worksheet_Change verwenden, die in den Codebereich des
betreffenden Tabellenblattes (Worksheet) gehört. Die
vollständige Syntax lautet
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Außerdem müsstest du ein zusätzliches Blatt einfügen
(zweckmäßigerweise ausgeblendet), in dem der aktuelle
Inhalt des relevanten Bereiches zwischengespeichert wird,
denn wenn die Änderung einmal vorgenommen wurde, ist der
alte Wert weg. Es gäbe zwar auch noch andere Möglichkeiten,
aber das hier ist die sicherste und programmtechnisch sauberste.
Was die konkrete Umsetzung angeht, bleiben noch einige Fragen:
Willst du immer nur die letzte oder alle Änderungen speichern?
Wenn letzteres, welche "Lebensdauer" hat die Datei, und mit
welcher Änderungsfrequenz ist zu rechnen? Falls die 65535
Zeilen zur Speicherung nicht ausreichen sollten, ist zwar rechts
von der vorgesehenen Spalte noch genug Platz, aber das muss
vorher klar sein, um es programmtechnisch zu berücksichtigen.
Woher kommt der Username? Ist es der aktuell in Windows
angemeldete Benutzer, oder hat deine Mappe eine eigene
Benutzerverwaltung?
Würde es die Struktur deines Tabellenblattes stören, wenn die
erste Zeile fixiert wird, damit die Spaltenüberschriften des
Protokolls immer sichtbar bleiben)?
Gibt es einen Blattschutz, und wenn ja, kann ihn der Benutzer
aufheben? Wenn er nämlich die Möglichkeit hat, das Protokoll
zu ändern, hat es keinerlei Wert. Ggf. wäre das Blatt mit
Passwort zu schützen (das du in dem ausgeblendeten Blatt
speichern kannst, weil es für das Schreiben des Protokolls
benötigt wird) und für die Zellen, die der Benutzer ändern
kann/soll, Locked auf False setzen. Der Rest des Blattes
(das Protokoll) kann dann nicht manuell geändert werden.
Diese Fragen müssten klar sein, bevor man an die konkrete
Realisierung geht (für die mir im übrigen in den nächsten
Tagen beruflich nicht viel Zeit bleiben wird...)
Gruß
|