Hallo Gabriel,
mein Vorschlag:
-------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
' Wenn sich B5 und E5 nicht ändern, dann soll Routine beendet werden!
If Application.Intersect(Target, Union(Range("D5"), Range("E5"))) Is Nothing Then Exit Sub
Set Zelle = Target
ActiveSheet.Unprotect
ActiveSheet.Range("J5").End(xlDown).End(xlDown).End(xlUp).Offset(1, 0).Select
ActiveCell.Value = Range("D5").Value / Range("E5").Value
ActiveCell.Offset(0, 1).Value = Date
Zelle.Select
ActiveSheet.Protect
End Sub
-------------------------------------------------------------------------
Den Code in das Tabellen-Objekt kopieren! In Zelle J4 sollte ein Wert (z.B. Überschrift) stehen, damit das Makro die Startzelle J5 richtig ermitteln kann!
Bei jeder Änderung im Tabellenblatt wird geprüft, ob die Änderung in Zelle B5 oder E5 passiert ist. Falls nicht, wird die Routine vorzeitig beendet!
Falls sich B5 oder E5 geändert hat, wird der neue Prozentwert in Spalte J ab Zeile 5 geschrieben sowie das Datum in Spalte K der selben Zeile!
Bei jeder weiteren Änderung wird der neue Prozentwert sowie das Änderungsdatum eine Zeile weiter unten angezeigt!
Am Ende springt der Cursor auf Zelle B5 oder E5 zurück!
Gruß
Robert
|