Hi...
Wenn ich richtig verstanden hab hast jetzt das Problem das er immer bei einer Leeren Zeile die Routine ausführt... oder?
Änder den Code folgend ab...
Fett geschriebene Zeilen sind verändert oder neu!
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo ErrHandle 'WICHTIG: Bei Fehler Sub Verlassen...
Dim tRow As Long 'Aktuelle Zeile
Dim CheckCol As String 'Zu prüfende Spalte
Dim CheckValue As String 'Zu prüfender Wert
Dim CopyColFrom As String 'Spalte von...
Dim CopyColTo As String '... bis bearbeiten
If DropWS_SelChange = True Then Exit Sub 'Siehe "Private DropWS_SelChange..."
CheckCol = "E" 'Spalte E prüfen
CheckValue = "AutoFill" 'Bei diesem Wert Zeile anfügen
CopyColFrom = "A" 'Von Spalte A...
CopyColTo = "E" 'bis Spalte E bearbeiten
tRow = Target.Row 'Aktuelle Zeile zwischenspeichern
If Target.Value = "" And tRow > 1 And Range(CheckCol & tRow).Value = "" Then 'Weiter wenn Zelle Leer ist und sich min. in der 2ten Zeile befindet und CheckCol in dieser Zeile noch Leer ist
If Range(CheckCol & tRow - 1).Value = CheckValue Then 'Weiter Wenn Zelle oberhalb in der Spalte CheckCol den Wert CheckValue hat
DropWS_SelChange = True 'Festlegen das diese sub nicht mehr aufgerufen werden darf
Range(CopyColFrom & tRow - 1 & ":" & CopyColTo & tRow - 1).Select 'Bereich makieren
Selection.AutoFill Destination:=Range(CopyColFrom & tRow - 1 & ":" & CopyColTo & tRow), Type:=xlFillDefault 'Bereich eines runter ziehen...
Range(CopyColFrom & tRow).Select 'Zelle in der Spalte CopyColFrom und der aktuellen Zeile auswählen
'Eventuelle Felder die leer sein sollen...
Range("B" & tRow).Value = ""
Range("C" & tRow).Value = ""
DropWS_SelChange = False 'Sub wieder Freigeben...
End If
End If
ErrHandle: 'Sprungmarke die aufgerufen wird wenn ein Fehler auftritt...
End Sub
Somit wird die Zeile nur angefügt wenn vorherige Bedingungen erfüllt sind.
Und zusätzlich noch in der Spalte E eine Zeile höher "AutoFill" steht.
Weiters muss in der Zeile die Spalte E Leer sein.
Somit kannst du den Text in den Zellen auch bearbeiten...
Ausserdem leere ich die Felder der Spalte B und C da dort Text eingegeben werden soll.
Beim Rest wird die Formel Kopiert...
Auszug aus der Excel-Tabelle...
CheckCol = "E"
CheckValue ="AutoFill"
CopyColFrom ="A"
CopyColTo = "E"
Spalte A: Vortlaufende Nummer
Spalte B/C: Bezeichnung und Preis
Spalte D: Vortlaufende Summe
Spalte E: CheckCol mit Wert "AutoFill". Textfarbe auf weis somit nicht gleich sichtbar
Könnte mann auch ganz zusammen schieben...
lg Tody