Clever-Excel-Forum

Normale Version: Kommentarfeldanpassungen per Makro
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallihallo,

folgendes Problem stellt sich mir derzeit.

Ich möchte nachvollziehen können, welcher Nutzer zuletzt Änderungen an einem Dokument vorgenommen hat. Dazu erweitert sich per Makro das Kommentarfeld, je nachdem welcher Nutzer zuletzt in die jeweilige Zelle geklickt hat.
Das Makro funktioniert soweit ganz gut. Allerdings sind mir nun ein paar Schwächen aufgefallen, die ich nicht beseitigt bekomme.
1. Ich möchte diese Nachverfolgungsoption nicht auf dem gesamten Arbeitsblatt nutzen, sondern nur in gewissen Spalten.
2. Wie in der Beispieldatei zu sehen ist, wird das Kommentarfeld auch eingefügt, wenn man mit einem Doppelklick in die Zelle geht, ohne einen Eintrag zu machen. Das Kommentarfeld soll sich aber nur bei einer Veränderung der Zellenwerte erweitern.  

[attachment=28814]

Besten Dank im Voraus
Matze
Moin!
11 Downloads (nicht von mir) und keine Antwort?
Dann dürfte es nicht an der Unfähigkeit der potentiellen Antworter liegen. Wink

Bei Deinem Excel (365) würde ich einfach eine Freigabe (OneDrive (for buisiness) oder PowerBI) erteilen.

Gruß Ralf
Moin Ralf,

meinst du das Problem lässt sich nicht lösen?


MfG
Matze
Hallo, :19:

deine Beispieldatei zurück: :21:
[attachment=28825]
Hallo case,

fast perfekt.
Eine Sache nur noch, wenn ich in die Zellen reinklicke, erscheint dort auch mein Name wenn ich keine Änderung in der Zelle vorgenommen habe.

Kann man das noch irgendwie umgehen? Es soll nur ein neuer Kommentar erscheinen, wenn auch tatsächlich Änderungen in der Zelle gemacht wurden.

MfG
Matze
Hallo Matze, :19:

bei mir und in der Beispieldatei nicht. Hast du in deiner Datei noch ein "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" am laufen? Exclamation

In der Beispieldatei wird nur bei Änderung im entsprechenden Bereich der Kommentar gesetzt. Nicht bei Klick und nicht bei Doppelklick ohne Eingabe. :21:
Hallöchen,

eventuell ist auch der Fall gemeint, dass man im Eingabemodus nur ENTER drückt, ohne was zu aendern Smile
Ja genau der Fall den schauan beschreibt ist gemeint.
Ich mache einen Doppelklick in die Zelle und bestätige mit Enter ohne jedoch eine Änderung vorgenommen zu haben.

MfG
Matze
Moin!
Dann schalte den Bearbeitungsmodus mittels Doppelklick doch einfach aus:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub

BearbMod per F2 ist davon nicht betroffen, muss aber sehr viel bewusster vorgenommen werden.

Gruß Ralf
Hallöchen,

oder man ändert Code und zerpflückt den Kommentar …


Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Variablendeklarationen
Dim strComOld As String, arrComment, boAdd As Boolean
'Bei Fehler zu Fin springen
On Error GoTo Fin
'wenn die geaenderte Zelle im definierten Beriech C4:I5 liegt, dann
If Not Intersect(Target, Range("C4:I5")) Is Nothing Then
  'Wenn es eine Zelle betrifft und was reingeschrieben wurde, dann
  'Hinweis: es wird also kein Kommentar geschrieben wenn
  'der Zellinhalt geloescht wird?
  If Target.CountLarge = 1 And Trim(Target.Value <> "") Then
    'Eventsteuerung aus
    Application.EnableEvents = False
    'Wenn noch kein Kommentar vorhanden ist, dann
    If Target.Comment Is Nothing Then
        'Kommentar hinzufuegen
        Target.AddComment
        'Aenderungsflag auf WAHR setzen
        boAdd = True
    'Wenn doch kein Kommentar vorhanden ist, dann
    Else
        'Kommentar schrittweise zerpfluecken.
        'Am Anfang steht uebrigens immer eine Leerzeile
        strComOld = Target.Comment.Text
        arrComment = Split(strComOld, Chr(10))
        arrComment = Split(arrComment(1), "/")
        arrComment = Right(arrComment(1), Len(arrComment(1)) - 2)
        'Wenn der Zellinhalt wirklich geandert wurde, dann
        'Aenderungsflag auf WAHR setzen
        If Target.Value <> arrComment Then boAdd = True
    'Ende Wenn noch kein Kommentar vorhanden ist, dann
    End If
    'Wenn Aenderungsflag auf WAHR steht, dann
    If boAdd = True Then
      'Kommentar hinzufuegen und breite setzen
      Target.Comment.Shape.TextFrame.AutoSize = True
      Target.Comment.Text vbLf & Application.UserName & "  " & Date & "/  " & Target.Value & strComOld
    'Ende Wenn Aenderungsflag auf WAHR steht, dann
    End If
  'Ende Wenn es eine Zelle betrifft und was reingeschrieben wurde, dann
  End If
'Ende wenn die geaenderte Zelle im definierten Beriech C4:I5 liegt, dann
End If
Fin:
Application.EnableEvents = True
If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & " " & Err.Description
End Sub
Seiten: 1 2