Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
664to668
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
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kommentar bei geänderten Zellen

Kommentar bei geänderten Zellen
12.09.2005 11:23:13
Stefan
Hallo zusammen,
ich habe folgendes Problem.
Eine Excel-Tabelle wird von mehreren Usern genutzt. Diese nehmen Einträge vor und löschen diese evtl. auch wieder.
Ich hätte nun gerne noch eine Protokollierung dieser Eingaben und zwar in der Form, dass ein Kommentar für die Zelle erstellt wird. Dieser soll sowohl den Usernamen als auch das Datum der letzten Änderung enthalten. Bei wiederholter Änderung einer Zelle sollen die neuen Änderungsdaten an die alten angehängt werden, so dass die Historie nachvollziehbar bleibt.
Gibt es hier eine elegante Lösung, die auch ich mit meinem fundiertem Halbwissen umsetzen kann?
Für die Antworten bereits jetzt vielen Dank.
Gruß
Stefan

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
funzen Ja, elegant ?
12.09.2005 11:30:19
Peter
Servus,
hierzu mal ne Nachfrage.
Welcher Bereich muss überwacht werden / Range?
Sollen alle Sheets überwacht werden ?
Mit welchem Ereigniss soll das angestossen werden (Calculate, SelectionChange)?
MfG Peter
AW: funzen Ja, elegant ?
12.09.2005 11:38:59
Thomas
Hi Stefan,
also ich wäre damit vorsichtig. Benutzerbezogene Daten protokollieren könnte tierischen Ärger geben.
Gruß
Thomas
AW: funzen Ja, elegant ?
12.09.2005 11:47:44
Stefan
Hallo Thomas,
in meinem Fall sollte es unkritisch sein, da es sich um eine Urlaubsdatei handelt, die jeder einsehen und ändern kann. Ansonsten gebe ich Dir recht. Hast Du vielleicht eine Lösung?
Stefan
da du meine Fragen nicht beantwortet hast....
12.09.2005 11:54:56
Peter
Servus,
....hier ne Pauschallösung.


      
'mit Alt+F11 in den VBA Editor wechseln, Code in DieseArbeitsmappe
Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)
'wird hierbei auf "alle" Tabellenblätter angewandt
'Bereich A1 - A10 wird überwacht
Dim strUser As String
Dim strOldCom As String
If Target.Column <> 1 Then Exit Sub
If Target.Row > 10 Then Exit Sub
    strUser = Application.UserName
        
With Target
            
If Not .Comment Is Nothing Then
            strOldCom = .Comment.Text
            .Comment.Text strOldCom & " " & strUser & " " & Date
            
Else
            .AddComment.Text (strUser & " " & Date)
            
End If
        
End With
End Sub 


MfG Peter
Anzeige
AW: da du meine Fragen nicht beantwortet hast....
12.09.2005 12:09:18
Stefan
Hallo Peter,
Du bist aber ungeduldig. Nach 25 Minuten habe ich geantwortet, manchmal macht man ja auch mal was anderes. ;-)
Erst einmal danke für die "Pauschallösung", die ja auch funktioniert. Etwas störend ist nur, das auch dann ein Kommentar erstellt wird, wenn nur in die Zelle geklickt wird. Kann man das noch ausschalten?
Gruß
Stefan
AW: da du meine Fragen nicht beantwortet hast....
12.09.2005 12:22:02
Andi
Hi,
nimm das Change-Ereignis statt Selction_Change, zB so:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Target
If .Comment Is Nothing Then .AddComment
.Comment.Text Text:=.Comment.Text & Chr(10) & Application.UserName & ": " & Date
End With
End Sub

is jetz ohne jede Beschränung der Range, sondern bezieht sich auf jede Zelle im gesamten Workbook. Müsste demnach ggf noch angepasst werden.
Schönen Gruß,
Andi
Anzeige
AW: da du meine Fragen nicht beantwortet hast....
12.09.2005 12:32:53
Stefan
Hallo Andi,
danke für Deine Antwort. Das genau das, was ich gewollt habe.
Vielleicht bis zum nächsten mal.
Gruß
Stefan
Gern geschehen... (ot)
12.09.2005 13:27:29
Andi
.
AW: da du meine Fragen nicht beantwortet hast....
12.09.2005 12:32:22
Peter
Servus,
ja das stimmt, muss mich heute vor der Buchhaltung drücken ;)).
Jetzt mal im ernst, ich persönlich würde das Ereigniss nicht ändern.
Ersetz die drei Zeilen mit den zwei alten.
If Target.Column  1 Then Exit Sub
If Target.Row > 10 Then Exit Sub
If Target.Value = "" Then Exit Sub

MfG Peter
warum nicht?
12.09.2005 13:29:02
Andi
Hi Peter,
warum würdest Du das Ereignis nicht ändern? Wenn der Code bei einer Änderung in einer Zelle ausgeführt werden soll, dann ist das Change-Ereignis doch das Ereignis der Wahl...
Schönen Gruß,
Andi
Anzeige
hab mich verlessen, sry, passt scho ;) o.t.
12.09.2005 15:23:34
Peter
MfG Peter
alles klar
12.09.2005 15:48:12
Andi
Viel Erfolg weiterhin bei Deinen Bemühungen, der Buchhaltung aus dem Weg zu gehn... :-))
Schönen Gruß,
Andi
AW: funzen Ja, elegant ?
12.09.2005 11:54:26
Stefan
Hallo Peter,
da es sich um eine Urlaubsdatei handelt, werden es 12 TB sein, die jeweils in einem bestimmten Bereich überwacht werden müssen.
Zum Ereignis kann ich recht wenig sagen, da ich bei VBA blutiger Anfänger bin. Der Kommentar sollte nach Änderung der Zelle erstellt oder ergänzt werden.
Gruß
Stefan
AW: Kommentar bei geänderten Zellen
12.09.2005 11:57:48
Harald
Hallo Stefan,
vielleicht nicht elegant, aber funzt. Vorraussetzung: Es sind bereits (leere)Kommentarfelder vorhanden. Die Überprüfung ob ein Kommentar bereits vorhanden ist, gelingt mir nicht (mein Level vba-Hausmannskost ;-)).
Ins Standardmodul:
Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Ins Blattmodul (Bereich A2:E500 ggf anpassen)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim RaBereich As Range
Dim ende
On Error GoTo ende
If Target.Row < 2 Or Target.Count > 1 Then Exit Sub
Set RaBereich = Range("A2:E500")
Application.EnableEvents = False
If Not Intersect(Target, RaBereich) Is Nothing Then
Dim Buffer As String * 100
Dim BuffLen As Long
BuffLen = 100
GetUserName Buffer, BuffLen
inhalt = Target.Comment.Text
Target.Comment.Text Text:=inhalt & Chr(10) & Left(Buffer, BuffLen - 1) & " " & Date
End If
ende:
Application.EnableEvents = True
Set RaBereich = Nothing
End Sub

Gruß
Harald
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige