Hallo Martin,
nachfolgendes Makro fügt Die immer im Tabellenblatt „Eingabe“ in der Zeile, in der der eine Zelle markiert ist, eine Leerzeile ein, kopiert alles aus einer Zeile höher in die eingefügte Zeile und löscht die von Dir vorgegebenen Zelleninhalte.
Das Gleiche passiert im Tabellenblatt „2011“ außer das Löschen der Daten, da es dort ja nicht notwendig ist
Auf das Prüfen ob in beiden Tabellenblättern die richtige Zelle in der gleichen Zeile markiert ist, habe ich verzichtet, da ich das nicht als notwendig empfinde. Es soll ja in beiden Tabellenblättern in der gleichen Zeile eine Leerzeile usw. eingefügt werden. Es reicht somit aus, wenn nur eine Zelle im Tabellenblatt „Eingabe“ markiert wird.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.
Option Explicit
Sub Zeile_einfügen()
Dim lngRow As Long
Dim intColumn As Integer
On Error GoTo ERRORHANDLER
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.ErrorCheckingOptions.BackgroundChecking = False
End With
lngRow = Selection.Row
With Sheets("Eingabe")
.Rows(lngRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Rows(lngRow - 1).Copy .Cells(lngRow, 1)
For intColumn = 4 To 26 Step 2
.Cells(lngRow, intColumn).ClearContents
Next
End With
With Sheets("2011")
.Rows(lngRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Rows(lngRow - 1).Copy .Cells(lngRow, 1)
End With
ERRORHANDLER:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ErrorCheckingOptions.BackgroundChecking = True
End With
End Sub
MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]