Hallo! Hier mal dein Code lesbarer. Zum Ändern müsste du ggf. mal noch erklären, was der Code genau machen soll. So wie er da steht, erschließt sich mir der Sinn nicht ganz. In der ersten for Schleife sollen nur 3 Zeilen eingefügt werden (immer mit einem Versatz von 2 - so dass eine alte Zeile dazwichen steht)? Hätte eher gedacht, dass das Ziel war 5 Zeilen einzufügen. Und in der Zeile nach dem for werden dann 6 Zeilen kopiert. Dadurch, dass aber immer mit dem Versatz von 2 gearbeitet wurde, werden die alten Werte überschrieben. Zudem sind das 6 Zeilen die kopiert werden - die for Schleife hätte auch ohne den Versatz aber nur max. 5 Zeilen eingefügt. He? ALso bitte nochmal kurz erklären, was passieren soll. VG
Private Sub CommandButton4_Click()
Dim zelleA
Dim Cell As Range
zelleA = Application.InputBox(Prompt:="Vor welcher Zeile soll ein neues Thema angelegt werden?", Title:="Zellenauswahl", Type:=1)
If zelleA = "" Then Exit Sub
'Verhindert Fehler, falls kein Wert eingegeben wurde
Application.CutCopyMode = False
For i = 0 To 4
Sheets("Übersicht").Cells(zelleA + i, 1).EntireRow.Insert
i = i + 1
Next
Sheets("nicht verändern").Rows("5:10").Copy Destination:=Sheets("Übersicht").Rows(zelleA)
'Elegantere und sicherere Schreibweise zum kopieren
For Each Cell In Sheets("nicht verändern").Rows("5:10")
'er geht durch jede zu kopierende Zelle durch in der Reihe
Call CopyPasteFormatCondition(Cell, Sheets("Übersicht").Cells(Cell.Row, Cell.Column))
'Er überträgt die bedingte Formatierung Zelle für Zelle ins neue WS
Next
End Sub
Sub CopyPasteFormatCondition(ByVal RngCopy As Range, ByVal RngPaste As Range)
Dim formCond As FormatConditions
Dim i As Integer, j As Integer
Set formCond = RngCopy.FormatConditions
RngPaste.FormatConditions.Delete
For i = 1 To formCond.Count
With RngPaste.FormatConditions
If formCond(i).Type = 1 Then
If formCond(i).Operator < 3 Then
.Add formCond(i).Type, formCond(i).Operator, formCond(i).Formula1, formCond(i).Formula2
Else: .Add formCond(i).Type, formCond(i).Operator, formCond(i).Formula1
End If
Else: .Add formCond(i).Type, , formCond(i).Formula1
End If
With .Item(i)
For j = 1 To formCond(i).Borders.Count
With .Borders(j)
.Color = formCond(i).Borders(j).Color
.LineStyle = formCond(i).Borders(j).LineStyle
End With
Next j
With .Font
.Bold = formCond(i).Font.Bold
.Color = formCond(i).Font.Color
.FontStyle = formCond(i).Font.FontStyle
.Italic = formCond(i).Font.Italic
.Strikethrough = formCond(i).Font.Strikethrough
.Underline = formCond(i).Font.Underline
End With
With .Interior
.Color = formCond(i).Interior.Color
.PatternColor = formCond(i).Interior.PatternColor
.Pattern = formCond(i).Interior.Pattern
End With
End With
End With
Next i
End Sub
|