vba kopieren ohne Formel
Hallo ihr Helfenden!
Ich habe eine Excel-Tabelle mit mehreren Arbeitsblättern. In einem Arbeitsblatt gibt es einen Range(A10:O19) dessen Zellinhalt per Makro in ein anderes Tabellenblatt an der nächsten freien Zeile (quasi nach dem letzten Eintrag) kopiert werden soll, allerdings sind in einigen Zellen Formeln enthalten. Diese Formeln werden leider statt der Zellinhalte kopiert.
Bin leider ein Ahnungsloser unter den Ahnungslosen. Deswegen eine Bitte: könnt ihr mir mein Makro so hinbiegen, dass die Werte kopiert werden ?
Hier mein Makro:
Private Sub CommandButton1_Click()
Dim lRow As Long
With Worksheets("Wareneingang")
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A10:O19").Copy .Cells(lRow, 1)
End With
Application.CutCopyMode = False
Dim strText As String
strText = " Daten kopiert"
MsgBox strText
End Sub
Vielen Dank im Voraus
Antwort schreiben
Antwort 1 von Hajo_Zi vom 14.10.2021, 18:22 Options
hier ein allgemeiner Ansatz
Sub Werte()
' Formeln ersetzen durch Werte ohne Formate
Columns("B:C").Copy
Columns("B:C").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False 'Zwischenspeicher löschen
End Sub
Antwort 2 von VBALehrling vom 14.10.2021, 19:21 Options
Hallo Hajo,
danke für die gute Idee.
Nur sollen die Formeln nicht gelöscht werden, da ich diese weiterhin benötige !
Der Bereich der kopiert werden soll, soll in das andere Arbeitsblatt als Wert übertragen werden und dann gibt es da noch ein Makro, der alle Einträge auf dem Ursprungarbeitsblatt löscht. Denn dieses Arbeitsblatt dient nur als "Eingabemaske" .
Antwort 3 von coros vom 14.10.2021, 19:34 Options
Hallo,
hast Du den Vorschlag von HaJo 1:1 angewandt? Denn der kopiert die Daten aus dem Bereich B:C und fügt Dir nur die Werte wieder in den Bereich B:C ein. Du musst natürlich den Bereich, in dem das eingefügt werden soll, ändern. Daher hat HaJo ja auch geschrieben
Zitat:
hier ein allgemeiner Ansatz
Mal Dein Code angepasst, sieht das wie folgt aus:
Private Sub CommandButton1_Click()
Dim lRow As Long
With Worksheets("Wareneingang")
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A10:O19").Copy
.Cells(lRow, 1).PasteSpecial Paste:=xlValues
End With
Application.CutCopyMode = False
Dim strText As String
strText = " Daten kopiert"
MsgBox strText
End Sub
Hier wird der Bereich A10:O19 des aktiven Tabellenblatts kopiert und in Tabellenblatt "Wareneingang" in die erste freie Zelle in Spalte A eingefügt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von VBALehrling vom 14.10.2021, 20:14 Options
Hallo Oliver,
habe den Bereich geändert. Nur nach dem Ausführen waren die Formeln verloren.
Durch deine "Anpassung" klappt das wunderbar.
Recht herzlichen Dank dafür !!!