folgendes Makro erstellt in einer Zelle einen Kommentar, sobald Sie verändert wird. Es wird der User, Datum und Uhrzeit, der Originaleintrag und der geänderte Wert im Kommentar ausgeworfen.
Leider bezieht sich das auf das ganze Tabellenblatt. Es soll aber nur der Bereich B2:AF30 überwacht werden.
In diesem Bereich werden über ein Makro externe Daten abgerufen. Ich habe es schon mit "If Intersect(Target, Range("B2:AF30")) Is Nothing Then Exit Sub" versucht, aber bei einer erneuten Datenabfrage bekomme ich dann den "Laufzeitfehler 13 - Typen unverträglich" und Zeile ".AddComment "Der Kommentar wurde erzeugt am: " & Date & " - " & Time & Chr(10) & "Vorgenommen durch: " & Application.UserName & Chr(10) & "Originaleintrag: " & .Value" wird gelb markiert.
Zudem gibt es noch folgende Probleme:
1. Wird mehr als eine Zelle markiert und dieser Bereich gelöscht, wird kein Kommentar erstellt. 2. Wenn die aktive Zelle leer ist und ein Wert wird eingegeben, übernimmt er im späteren Kommentar diesen Wert als Originaleintrag, obwohl die Zelle vorher leer war. Das Gleiche macht er mit Zellen, die schon einen Wert enthalten und ich diesen ändere.
Im Anhang als Beispiel eine Testdatei.
https://www.herber.de/bbs/user/52235.xls
Was müßte also im folgenden Code geändert werden, um diese Fehler zu vermeiden?
Vielen Dank schon mal im Voraus für Eure Unterstützung!!! Grüße, Stephan
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strComment As String
If Target.Count > 1 Then Exit Sub
With Target
If .Comment Is Nothing Then
.AddComment "Der Kommentar wurde erzeugt am: " & Date & " - " & Time & Chr(10) & "Vorgenommen _
durch: " & Application.UserName & Chr(10) & "Originaleintrag: " & .Value
.Comment.Visible = False
Else
strComment = .Comment.Text & Chr(10)
.Comment.Text strComment & Chr(10) & "Änderung vorgenommen am: " & Date & " - " & Time & Chr(10) _
& "Änderung vorgenommen durch: " & Application.UserName & Chr(10) & "Geänderter Inhalt: " & .Value
.Comment.Visible = False
End If
End With
End Sub