Das nachfolgende Programm löscht alle Einträge die hinter dem geänderten Eintrag stehen (egal wie viele).
1.) Der folgende Code gehört in das Tabellen-Modul kopiert:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Notausgang
Application.EnableEvents = False
aktualisiere Target
Application.EnableEvents = True
Exit Sub
Notausgang:
MsgBox Err.Number & " " & Err.Description, vbCritical + vbOKOnly, "Notausgang"
Application.EnableEvents = True
End Sub
2.) Der folgende Code gehört in ein Programm-Modul
Function aktualisiere(ein As Range)
Dim saveD() As Variant
Dim ct As Long 'Counter
'Zellen inkl. Neueingabe speichern
ct = 1
While ct <> ein.Column + 1
ReDim Preserve saveD(ct)
saveD(ct) = Cells(ein.Row, ct).Value
ct = ct + 1
Wend
'lösche ganze Zeile
ein.EntireRow.Clear
'Zellen aus Zwischenspeicher zurück
For ct = 1 To UBound(saveD)
Cells(ein.Row, ct).Value = saveD(ct)
Next
ein.Select
End Function
Man könnte eventuell noch eine Bereichsbeschränkung (wenn Änderung ab einer bestimmten Zeile erfolgt, soll das Programm nicht mehr durchgeführt werden, in das Tabellen-Modul einbauen)
Lg.
Martin
|