Thema Datum  Von Nutzer Rating
Antwort
07.05.2008 08:08:00 Stefan
NotSolved
07.05.2008 20:36:44 jh
Solved
Rot Mit VBA Zellbereiche protokollieren
08.05.2008 14:15:59 Stefan
NotSolved
08.05.2008 17:00:15 jh
NotSolved
08.05.2008 19:57:28 Stefan
NotSolved
13.05.2008 08:09:01 Stefan
NotSolved

Ansicht des Beitrags:
Von:
Stefan
Datum:
08.05.2008 14:15:59
Views:
1070
Rating: Antwort:
  Ja
Thema:
Mit VBA Zellbereiche protokollieren
Hallo jh,

vielen Dank zunächst für Deine Antwort! Und nun zu deinen Fragen:

1. Es reicht aus, wenn die letzte Änderung gespeichert wird.
2. Username wäre der in Windows aktuell angemeldete Benutzer
3. Eine Zeilenfixierung ist (im gleichen TabBlatt) schon vorhanden. Aber dazu sag ich gleich noch was....
4. Blattschutz gibt es keinen, da ich das TabBlatt dann über den VBA-Editor mit Visible= "xlSheetVeryHidden" ausblenden würde. Reicht für die spätere Verwendung vollkommen aus.

So, nun noch wie o. g. was zur Zeilenfixierung und zum besseren Verständnis: Die ganze Protokollierung
soll nach Möglichkeit im gleichen Tabellenblatt ("Tabelle1") ab Spalte AP (ich hatte zuvor AM geschrieben, sorry) stattfinden. Hintergrund ist: Dieses TabBlatt wird nachher quasi als "Tagesdatei" an einem anderen Ort neu gespeichert. Bei einem zusätzlichem TabBlatt ("Protokoll") müssten diese Daten dann noch erst in das TabBlatt ("Tabelle1") kopiert werden.

Das heißt nun konkret: Wird also in Zeile B2:AF2......B30:AF30 (in Zeile1 stehen Spaltenüberschriften und von Spalte AG:AL stehen noch andere Werte) ein Wert geändert, soll dies ab Spalte AP2:AS2......B30:AF30 für jede Zeile mit den Kriterien "User" "Datum/Zeit" "Wert alt" und "Wert neu" angezeigt werden.

Die Auflistung der Werte in den Zellen B2, C2 und D2 entfällt zunächst. Ich hoffe, ich konnte das einigermaßen beschreiben.......

Grüße, Stefan



jh schrieb am 07.05.2008 20:36:44:

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ß



Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.05.2008 08:08:00 Stefan
NotSolved
07.05.2008 20:36:44 jh
Solved
Rot Mit VBA Zellbereiche protokollieren
08.05.2008 14:15:59 Stefan
NotSolved
08.05.2008 17:00:15 jh
NotSolved
08.05.2008 19:57:28 Stefan
NotSolved
13.05.2008 08:09:01 Stefan
NotSolved