AW: Leerzeile am Ende eines Datenbereichs anfügen
25.01.2015 09:47:38
fcs
Hallo Roland,
unter Excel 2003 hieß die Funktion, die automatisch den Datenberech inklusive Formaten und Formeln erweitert noch Liste (im Menü Daten oder Einfügen).
Per Makro geht es auch.
Hier eine Beispieldatei mit beiden Varianten erstellt unter Excel 2010 und im 2003er-Format gespeichert.
https://www.herber.de/bbs/user/95240.xls
Gruß
Franz
'Code unter dem Tabellenblatt mit den Eingaben
Private Sub Worksheet_Change(ByVal Target As Range)
'Überwachung von Eingaben in den Spalten B bis F
Dim rngAktiv As Range, rngZelle As Range
Dim StatusCalc As Long
Const bolBlattschutz As Boolean = True 'Auf False ändern, wenn ohne Blattschutz _
gearbeitet werden soll
If Target.Cells.Count = 1 Then
Select Case Target.Row
Case Is >= 40
Select Case Target.Column
Case 2, 3, 4, 5, 6 'Spalten B bis F 'Spalten ggf. anpassen
'Prüfung ob Eingabe in letzter Zeile mit Formel erfolgte
'Die 1 in der folgenden Zeile ggf. ändern, wenn Spalte A keine _
Formel enthält
If Target.Row = Cells(39, 1).End(xlDown).Row Then
With Application
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
Set rngAktiv = ActiveCell 'aktive Zelle merken
If bolBlattschutz Then Me.Unprotect
Rows(Target.Row).Copy
Rows(Target.Row).Offset(1, 0).Insert
'8 in folgezeile = letzte Spalte mit Eingabe
For Each rngZelle In Range(Cells(Target.Row + 1, 1), _
Cells(Target.Row + 1, 8))
If Not rngZelle.HasFormula Then
rngZelle.ClearContents
End If
Next
rngAktiv.Select
If bolBlattschutz Then
Me.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
End If
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End If
End Select
Case Else
'do nothing
End Select
End If
End Sub