Hallo Jürgen666, ich habs mir das nochmal angeschaut. Das mit den Checkboxen ist so nicht zu realisieren. Du müßtest für jede Checkbox in der betreffenden Zeile eine LinkedCell definieren, in der der Wert der Checkbox praktisch angezeigt wird, und, außerdem der Wert in dieser Zelle den Wert der Checkbox ändert. LinkedCell 1->0 bedeuted Checkbox wird von mit Haken auf ohne Haken gesetzt. Checkbox von ohne Haken auf mit Haken bedeuted die LinkedCell wird von 1 auf 0 gesetzt. Langer Rede kurzer Sinn: Da es nur mit Hilfszellen geht schlage ich vor, von vornherein nur die Hilfszellen zu benutzen! Das spart Aufwand und Speicher und braucht weniger Code.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim trgZeile As Long
Dim lngLaufZahl As Long
'Die Spalte E wird für die Hilfswerte 0 oder 1 benutzt
'Änderungen die nicht in Spalte E und Zeile 1 stattfinden werden nicht bearbeitet
If Target.Column <> 5 Then Exit Sub
If Target.Row = 1 Then Exit Sub
'Ereignisse abschalten
Application.EnableEvents = False
Application.ScreenUpdating = False
With ThisWorkbook
'Es gibt nur zwei Blätter: Blatt 1 ist Quellbereich, Blatt 2 ist Zielbereich.
'Blattname wird nicht verwendet
With .Sheets(2)
.Activate
If Target = 1 Then
'Erste freie Zeile
trgZeile = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row + 1
Target.EntireRow.Columns("A:D").Copy
.Cells(trgZeile, 1).Select
Selection.PasteSpecial xlValues
.Cells(trgZeile, 1).Select
ElseIf Target = 0 Then
'Letzte beschriebene Zeile
trgZeile = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
'Es wird angenommen, daß in der ersten Zeile Überschriften stehen.
For lngLaufZahl = 2 To trgZeile
If .Cells(lngLaufZahl, 1) = Target.Offset(0, -4) Then
.Cells(lngLaufZahl, 1).EntireRow.Delete
Exit For
End If
Next lngLaufZahl
Else
Target = 0
End If
End With
.Sheets(1).Activate
End With
'Escape-Taste drücken
Application.SendKeys "{ESC}"
'Ereignisse einschalten
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Severus
|