Man kann ja mit der Event-Prozedur worksheet_change(Target) Änderungen am Tabellenblatt abfangen.
Leider habe ich noch keine einfache Methode gefunden, wie man an den bisherigen Wert der geänderten Zellen kommt. Cool wäre eine Eigenschaft á la .OldValue
Habe ich aber, wie geschrieben, noch nicht gefunden.
Deshalb habe ich mir folgendes überlegt:
Funktioniert zwar ganz gut, ist aber sehr unperformant.
Wer hat eine bessere Idee?
Leider habe ich noch keine einfache Methode gefunden, wie man an den bisherigen Wert der geänderten Zellen kommt. Cool wäre eine Eigenschaft á la .OldValue
Habe ich aber, wie geschrieben, noch nicht gefunden.
Deshalb habe ich mir folgendes überlegt:
Visual Basic-Quellcode
- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim Zelle As Range, Auswahl As Range
- Dim NeueWerte As New Collection
- Set Auswahl = Selection
- For Each Zelle In Target.Cells
- NeueWerte.Add Zelle.Value, Zelle.Address
- Next Zelle
- Application.EnableEvents = False
- Application.Undo
- For Each Zelle In Target.Cells
- If Zelle.Value = "Bild" And NeueWerte(Zelle.Address) <> "Bild" Then
- Zelle.Offset(, 1).Value = "'<-- war ein Bild"
- End If
- Zelle.Value = NeueWerte(Zelle.Address)
- Next Zelle
- Auswahl.Select
- Application.EnableEvents = True
- End Sub
Funktioniert zwar ganz gut, ist aber sehr unperformant.
Wer hat eine bessere Idee?