ich komme heute mal mit einem kleinen Problemchen, bei dem ich aber allein nicht weiterkomme.
Der folgende hübsche Code (bereits mit eurer Hilfe) zeigt mir ab dem Teil "Case is = 7" ob Änderungen an Zellen einer Spalte durchgeführt wurden, indem er einen Kommentar anlegt, in dem die Änderung vermerkt ist. (Der Teil ab "Case is 14" ist nur der vollständigkeit halber dabei.) Das ganze funktioniert auch super, bis auf, wenn ich Formeln in dem überwachten Bereich per Maus über mehr als eine benachbarte Zelle ziehe, eine Fehlermeldung "Laufzeitfehler1004" kommt. Grund ist wahrscheinlich, dass Excel nicht zwei Zellen in einem Funktionsdurchlauf bearbeiten kann. Im Debugger bleibt der Zeiger denn auch bei "Target.AddComment" hängen.
Hat jemand eine Idee, wie ich diese Fehlermeldung unterdrücken kann. Im Fall des Formelziehens könnte auch gut auf den Kommentar verzichtet werden. Es sollte auf jeden Fall verhindert werden, dass die Option debuggen aufgerufen werden kann und VBA-Code sichtbar wird. (Dort steht unter anderem auch das Passwort.) Vielleicht so, dass die Funktion im Fall des Laufzeitfehlers beendet wird und von Anfang neu durchlaufen kann.
Danke und viele Grüße,
Jan
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case Is = 14
If Target.Column 14 Then Exit Sub
If Cells(Target.Row, 14) > 0 Then
Cells(Target.Row, 12) = Target
End If
If Cells(Target.Row, 14) = 0 Then
Cells(Target.Row, 12).FormulaR1C1 = "=RC[-5] * RC[-6]"
End If
Case Is = 7
If Not Intersect(Target, Range("G2:G255")) Is Nothing Then 'Ueberwachter Bereich
If Target.Comment Is Nothing Then 'wenn kein Kommentar vorhanden
Target.AddComment 'erstelle einen Kommentar
Target.Comment.Text Target.Comment.Text & Format(Target.Value, "#.##") & " geä _
_
ndert am " & Date 'schreibe Inhalt aus Zelle A1 in Kommentar
Target.Comment.Visible = False
Else 'wenn Kommentar vorhanden
Target.Comment.Text Target.Comment.Text & Chr(10) & Format(Target.Value, "#.##") _
_
& " geändert am " & Date 'alter Inhalt und neuer Inhalt Zelle A1
Target.Comment.Shape.Height = Target.Comment.Shape.Height + 30 ' Höhe Feld
Target.Comment.Visible = False
End If
End If
Case Else
Exit Sub
End Select
End Sub