ich habe ein Makro, dass alle Zeilen, die in einer bestimmten Spalte "Capex" enthalten, ausschneidet und diese dann in ein anderes Tabellenblatt einfügt. Dabei werden noch 2 Spalten vertauscht. Das funktioniert soweit ganz gut. Im Zielblatt stehen jedoch in einigen Spalten Formeln, die durch das Makro dann aber leider überschrieben werden. Ist es möglich das Makro so umzuschreiben, dass die Formeln in der Zieltabelle erhalten bleiben? Die Formeln werden übrigens mit einem Leeren Feld überschrieben, da diese Spalten ausgetauscht werden oder vorher keine Werte enthielten.
Hier der Code des besagten Makros:
Private Sub CommandButton5_Click()
CommandButton5.Caption = "CAPEX ausbuchen"
Dim rng As Range
Dim lngNext As Long, lngR As Long
Dim CalculationMode As Long
Const cstrView As String = "tempView"
On Error GoTo ErrorHandler
With Application
.ScreenUpdating = False
.EnableEvents = False
CalculationMode = .Calculation
.Calculation = xlManual
.DisplayAlerts = False
End With
ThisWorkbook.CustomViews.Add cstrView, True, True
With Sheets("Verbindlichkeiten").Range("A7").CurrentRegion
.AutoFilter
.AutoFilter Field:=12, Criteria1:="=CAPEX"
On Error Resume Next
Set rng = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells( _
xlCellTypeVisible)
On Error GoTo 0
End With
If Not rng Is Nothing Then
With Sheets("CAPEX")
lngNext = Application.Max(8, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
rng.Copy .Cells(lngNext, 1)
For lngR = lngNext To Application.Max(lngNext, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
.Cells(lngR, 15) = .Cells(lngR, 5).Value: .Cells(lngR, 5) = ""
.Cells(lngR, 14) = .Cells(lngR, 6).Value: .Cells(lngR, 6) = ""
Next
rng.Delete
End With
End If
Sheets("Verbindlichkeiten").Range("A7").CurrentRegion.AutoFilter
With ThisWorkbook
.CustomViews(cstrView).Show
.CustomViews(cstrView).Delete
End With
ErrorHandler:
With Err
If .Number 0 Then
MsgBox "Fehler in Prozedur:" & vbTab & "'nn'" & vbLf & String(25, "") & _
vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
"Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
.Description & vbLf, 81968, "VBA - Fehler in Prozedur - capex", .HelpFile, .HelpContext
.Clear
End If
End With
On Error GoTo 0
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalculationMode
.DisplayAlerts = True
.StatusBar = False
End With
End Sub
Wäre wirklich super, wenn ihr mir damit weiterhelfen könnt, da ich leider nur sehr wenig Ahnung von Makros habe.
Beste Grüße
Martin