AW: Neue Zeile automatisch (die xte:) - Aber...
03.04.2007 17:59:00
fcs
Hallo René,
das kann man mit einem Makro realisiern, dass auf die Eingabe von Werten in Zellen reagiert.
Sinnvoller Weise sollte dann auch der Schutz der Zellen im Blatt entsprechend formatiert sein, so dass Zellen mit Formeln nicht versehentlich gelöscht/überschrieben werden.
Den folgenden Code muss du im VBA-Editor unter der Tabelle einfügen, in der die Eingaben gemacht werden.
Im Code selber muss du ggf. noch den Wert für Variable "SpalteFormel" anpassen.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim SpalteFormel As Integer, ZeileFormel As Long, Spalte As Integer
' Formeln kopieren, wenn in Spalte B eine neue Datenzeile eingegeben wird
If Target.Row > 3 And Target.Column = 2 Then
SpalteFormel = 3 'Eine Spalte (hier C) in der eine Formel eingetragen ist
'LetzteZeile mit Formel ermitteln
ZeileFormel = Me.Cells(Me.Rows.Count, SpalteFormel).End(xlUp).Row
Select Case Target.Row - ZeileFormel
Case 1 'Neue Eingabe-Zeile wird angelegt
Me.Unprotect 'Zeile deaktivieren, wenn Zellschutz nicht entsprechend formatiert ist
Application.EnableEvents = False
For Spalte = 1 To Me.Cells(ZeileFormel, Me.Columns.Count).End(xlToLeft).Column
If Me.Cells(ZeileFormel, Spalte).HasFormula = True Then
Me.Cells(ZeileFormel, Spalte).Copy Destination:=Me.Cells(Target.Row, Spalte)
End If
Next Spalte
Application.EnableEvents = True
Me.Protect 'Zeile aktivieren, wenn Zellschutz nicht entsprechend formatiert ist
Case Is > 1 'Es wurde nicht die nächste leere Zeile als Eingabezeile gewählt
MsgBox "Nächste Eingabe muss in Zeile " & ZeileFormel + 1 & " gemacht werden!"
Application.EnableEvents = False
Target.ClearContents
Me.Cells(ZeileFormel + 1, Target.Column).Select
Application.EnableEvents = True
Case Else
'do nothing, existierende Datenzeilen werden geändert
End Select
End If
End Sub