Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Makro soll Formeln nicht überschreiben
16.12.2015 16:29:07
Martin
Hallo zusammen,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro soll Formeln nicht überschreiben
18.12.2015 08:36:31
fcs
Hallo Martin,
um die Formeln nicht zu überschreiben mussen die gefilterten Daten aus "Verbindlichkeiten" in mehreren Spaltenblöcken nach "CAPEX" kopiert werden.
Dazu solltest du eine kleine Beispiel Datei erstellen (vertrauliche Daten anonymisieren) und im Blatt "CAPEX" die Spalten/Zellen markieren, die beim Kopieren nicht überschrieben werden sollen.
Die Datei dann hier hochladen und den Link in deine Antwort einfügen.
Gruß
Franz

AW: Makro soll Formeln nicht überschreiben
18.12.2015 11:40:20
Martin
Hallo Franz,
danke für deine Antwort. Ich habe eine Beispieldatei hochgeladen. Das Makro ist enthalten und die Spalten in "Capex", wo die Formeln erhalten bleiben sollen, sind gelb markiert. Noch zur Info: Das Makro verschiebt die Spalten E und F im Blatt "Capex" in die Spalten O und N (E nach O; F nach N).
Hier der Link der Beispieldatei: https://www.herber.de/bbs/user/102338.xlsm
Vielen dank schon mal für deine Hilfe
Beste Grüße
Martin

Anzeige
AW: Makro soll Formeln nicht überschreiben
19.12.2015 09:10:37
fcs
Hallo Martin,
hier die Textdatei mit dem angepassten Makro.
https://www.herber.de/bbs/user/102361.txt
Zusätzlich zur Anpassung des Kopierens der gefilterten Daten hab ich folgendes ergänzt:
  • Es wird im Blatt "CODEX" geprüft, ob der Autofilter aktiv ist und entsprechende Aktionen ausgeführt. Nur so wird die letzte Zeile mit Daten immer korrekt ermittelt

  • Die Formeln in den kopierten Zeilen werden eingefügt

  • Die Formeln in der Zusammenfassung werden angepasst bzgl. der letzten Zeile mit Daten

  • Durch das Einfügen/Anpassen der Formeln ist es nicht mehr erforderlich in den Spalten E, F und P Formeln auf Vorrat anzulegen.
    Gruß
    Franz
    Anzeige

    305 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige