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

Automatisches Kommentarfeld?

Automatisches Kommentarfeld?
28.09.2017 15:14:24
Thomas
Hallo
Mal eine Frage.
In meinem Bereich melden sich mehrere Leute am Rechner an und bearbeiten eine Liste.
Kann man es so machen, das die UserID automatisch ausgelesen wird und wenn in einer Zelle etwas eingetragen wird, die UserID automatisch als Kommentar abgelegt wird?
Die Idee dahinter, das nachvollziehbar ist, wer diesen Eintrag getätigt hat.
Danke für Euer Mithilfe

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisches Kommentarfeld?
28.09.2017 15:33:32
Werner
Hallo Thomas,
schau dir mal Überprüfen - Änderungen nachverfolgen an.
Gruß Werner
AW: Automatisches Kommentarfeld?
28.09.2017 15:41:44
michlchen
geht recht einfach...
den vbe (vba editor) aufmachen bspw. mit strg + F11.
dann unter microsoft excel objekte und wiederum diese arbeitsmappe kannst du ein sub "Worksheet_Change(ByVal Target As Excel.Range)" erstellen. (oben in der ersten auswahlbox auf workbook und dann in der 2. auf change)
das target ist dann die aktuelle zelle (bzw. mehrere, wenn viele ausgewählt sind).
in dieses sub schreibst du dann:
'sicherheitshalber, da eine mehrfachauswahl probleme beim makrolauf machen könnte. man könnte aber auch mehrfachauswahl abfangen...
if target.count > 1 then exit sub
'vorsichtshalber vorherigen commi löschen. man könnt aber auch fortschreiben und den letzten immer oben dran packen, bis irgendwann mal zu viel text im kommentar ist...
on error resume next
Target.Comment.delete
on error goto 0
Target.AddComment (Environ("USERNAME"))
Anzeige
AW: Automatisches Kommentarfeld?
28.09.2017 15:45:07
UweD
Hallo
- Rechtsclick auf Tabellenblattreiter
- Code anzeigen
- Das hier reinkopieren
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Dim Z, RNG As Range
    
    Set RNG = Range("A1:E100")
    
    If Not Intersect(RNG, Target) Is Nothing Then
        If Target.Row <= 1 Then Exit Sub 'wegen Überschrift 
        For Each Z In Target
            If Z <> "" Then
                With Z
                    .ClearComments
                    .AddComment
                    .Comment.Visible = False
                    .Comment.Text Text:=Environ("Username")
                End With
            End If
        Next
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Den Bereich habe ich mal exemplarisch gewählt A1 bis E100
LG UweD
Anzeige
AW: Automatisches Kommentarfeld?
28.09.2017 18:09:10
Thomas
Danke für die Makros.
Hab mir mal das Makro von Uwe geschnappt und reimkopiert.
Kann man das noch mit dem aktuellen Datum erweitern?
AW: Automatisches Kommentarfeld?
28.09.2017 18:10:04
Thomas
...und wenn ich ein Eintrag entferne, das dass Kommentarfeld automatisch gelöscht wird?
AW: Automatisches Kommentarfeld?
28.09.2017 21:15:35
Sepp
Hallo Thomas,
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim objRange As Object, objChange As Range

On Error Resume Next
Set objChange = Intersect(Target, Me.UsedRange)
On Error GoTo 0

If Not objChange Is Nothing Then
  For Each objRange In objChange
    If objRange = "" Then
      Call addComment(objRange, Now, Environ("USERNAME"), "Daten gelöscht!")
      'oder
      'Call addComment(objRange, , , , True)
    Else
      Call addComment(objRange, Now, Environ("USERNAME"), "Daten geändert!")
    End If
  Next
End If

End Sub

Private Sub addComment(ByRef Target As Range, Optional ByVal changedOn As Date, Optional ByVal User As String, Optional ByVal Message As String, Optional ByVal Delete As Boolean = False)
Dim strMsg As String

strMsg = Message & vbLf & vbLf & "Geändert am:" & String(4, " ") & Format(changedOn, "yyyy.MM.dd hh:mm:ss") & _
  vbLf & "Geändert von:" & String(3, " ") & User
With Target
  .ClearComments
  If Not Delete Then
    .addComment strMsg
    With .Comment.Shape
      .TextFrame.AutoSize = True
      .Fill.ForeColor.RGB = RGB(175, 175, 175)
    End With
  End If
End With
End Sub

Gruß Sepp

Anzeige
AW: Automatisches Kommentarfeld?
29.09.2017 07:16:18
Thomas
Habe den Code 1:1 übernommen.
Leider löscht er das Kommentarfeld nicht, wenn ich den Zellinhalt lösche....
Sprich Zelle leer, Kommentar löschen
AW: Automatisches Kommentarfeld?
29.09.2017 08:21:44
WalterK
Hallo Thomas,
Sepp hatte das im Code vorausschauend schon vorgesehen:
ändere den Teil:
Call addComment(objRange, Now, Environ("USERNAME"), "Daten gelöscht!")
'oder
'Call addComment(objRange, , , , True)
in:
'Call addComment(objRange, Now, Environ("USERNAME"), "Daten gelöscht!")
'oder
Call addComment(objRange, , , , True)
Servus, Walter
AW: Automatisches Kommentarfeld?
29.09.2017 08:53:54
Thomas
Prima, das funzt.
Hab leider erst jetzt verstanden, was Sepp meinte....
Habe den Code so gelassen, das wenn etwas gelöscht wird, auch gelöscht von ... im Kommentar steht.
Kann man das löschen von Kommentaren sperren?
Anzeige
AW: Automatisches Kommentarfeld?
29.09.2017 09:50:53
UweD
Hallo nochmal
du könntest zumindest den Rechtsclick unterbinden.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim RNG As Range
    Set RNG = Range("A1:E100")
    
    If Not Intersect(RNG, Target) Is Nothing Then
        Cancel = True
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Dim Z, RNG As Range
    
    Set RNG = Range("A1:E100")
    
    If Not Intersect(RNG, Target) Is Nothing Then
        If Target.Row <= 1 Then Exit Sub 'wegen Überschrift 
        For Each Z In Target
            With Z
                If .Value <> "" Then
                    .ClearComments
                    .AddComment
                    .Comment.Visible = False
                    .Comment.Text Text:=Format(Date, "DD.MM.YYYY: ") & Environ("Username")
                Else
                    .ClearComments
                    .AddComment
                    .Comment.Visible = False
                    .Comment.Text Text:=Format(Date, "DD.MM.YYYY: ") & "gelöscht von " & Environ("Username")
                End If
            End With
        Next
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Automatisches Kommentarfeld?
29.09.2017 08:52:35
UweD
Hallo nochmal
mit Datum und löschen
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Dim Z, RNG As Range
    
    Set RNG = Range("A1:E100")
    
    If Not Intersect(RNG, Target) Is Nothing Then
        If Target.Row <= 1 Then Exit Sub 'wegen Überschrift 
        For Each Z In Target
            With Z
                .ClearComments
                If .Value <> "" Then
                    .AddComment
                    .Comment.Visible = False
                    .Comment.Text Text:=Format(Date, "DD.MM.YYYY: ") & Environ("Username")
                End If
            End With
        Next
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige