Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Copy - Paste: Werte, aber nicht Formate kopieren

Copy - Paste: Werte, aber nicht Formate kopieren
04.09.2007 12:52:00
Bernd
Hallo zusammen,
für die VBA-Freaks sicherlich einfach:
Mit untenstehendem Code kopiere ich die Werte, aber leider auch die Formate.
Worksheets("1").Cells(5,1).Copy destination:=Worksheets("2").Cells(10,1)
Frage bitte: Wie erreiche ich, dass die bestehenden Formate (Farbe, Zelllinien, Schriftart etc.) in der Destination-Cell beibehalten werden?
Vielen Dank vorab,
Bernd

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nein, das funkt. nicht...
04.09.2007 14:06:00
Bernd
Wenn ich den Code erweitere um " .PasteSpecial Paste:=xlValues ", dann kommt die Fehlermeildung " Erwartet Anweisungsende".
Worksheets("1").Cells(5,1)..PasteSpecial Paste:=xlValues destination:=Worksheets("2").Cells(10,1)
Please help....
Danke vorab
Bernd

Anzeige
AW: Copy - Paste: Werte, aber nicht Formate kopieren
04.09.2007 14:18:40
Hajo_Zi
Hallo Bernd,
kopiere nur die Werte.

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



Anzeige
@HaJo, bitte.
04.09.2007 14:40:51
Bernd
Hi hajo,
erst mal Danke, für deine Hilfe. Problem: Werte eines Folgejahres in die Zelle des Vorjahres kopieren
(bei Budgetüberarbeitung sollen die Werte z.B. vom Jahr 2008 in die Zelle geschrieben werden, die urüsprünglich die Werte von 2007 enthielten etc.). Die Formate dabei sind aber unterschiedlich.Ich will die urpsünglich in der Zielzelle enthaltenen Formate beibehalten.
Ich habe dir mal einen Code (u.a. mit deinen Teilen) beigefügt, an dem ich momentan bastele, der aber in der ersten Range-Zeile schon stehenbleibt.
' Formeln ersetzen durch Werte ohne Formate

Sub NurWerteKopieren()
Dim Financials As Worksheet
With Financials
.Range("Costs_FY2").Copy
.Range("Costs_FY1").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Copy
.Range("Costs_FY3").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False         'Zwischenspeicher löschen
End With
End Sub


Vielen Dank vorab.
Grüße
Bernd

Anzeige
AW:Werte kopieren
04.09.2007 14:50:00
Hajo_Zi
Hallo Bernd,
was mir auffällt Du definierst Financials , schreibst aber nichts drauf vor der ersten Verwendung.
Ich gehe mal von aus die verwendeten Namen gibt es in der Tabelle.
Ein anonymes Beispiel ist manchmal auch nicht schlecht.
Kleiner Tip am Rande niemals jemand prsönlich mit einer Frage ansprechen, das könnte andere davon abhalten. Falls der Antworter die Mailbenachrichtigung aktiviert hat, liest er auch Deinen Beitrag, vermute ich mal.
Gruß Hajo

Anzeige
AW: AW:Werte kopieren
04.09.2007 16:31:17
Bernd
Hi Hajo,
ich habe jetzt mal eine Bsp.Datei gebastelt. Du vermutest richtig, dass ich Namen verwende.
Deine Aussage zu "was mir auffällt..." verstehe ich fachlich nicht. Ich bin leider ein VBA-Nichtkönner.
Willst du mir bei meinem Problem "Copy_Paste bei Beibehaltung der Formatierungen".
https://www.herber.de/bbs/user/45681.xls
Tausend Dank vorab,
Bernd

Anzeige
AW: AW:Werte kopieren
04.09.2007 16:42:00
Hajo_Zi
Hallo Bernd,
Du hast Financials definierst und schreibst dann With Financials die Variable ist aber nichht belegt.

Sub NurWerteKopieren()
'    Dim Financials As Worksheet
With ActiveSheet ' Financials
.Range("Costs_FY2").Copy
.Range("Costs_FY1").PasteSpecial Paste:=xlValues
.Range("Costs_FY3").Copy
.Range("Costs_FY2").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Copy
.Range("Costs_FY3_Q1").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Value = "0"
Application.CutCopyMode = False         'Zwischenspeicher löschen
End With
End Sub


Gruß Hajo

Anzeige
lezte Frage
04.09.2007 18:49:00
Bernd
Danke Dir noch einmal, HaJo,
letzte Frage und Bitte:
warum speichert mein kompletter Code denn das Blatt nicht ab? Wenn Du aber nicht mehr willst, bin ich dir auch nicht nachtragend :-) . Versteh' ich. So ein Kleinkram.

Sub kopieren_einfuegen()
Dim VarDat As Variant
Dim Mappe As Workbook
Dim rg As Range
Dim Sum As Range
Dim GB As Range
Dim Financials As Worksheets
With Application.FileSearch
.NewSearch
.LookIn = "P:\Budgetplanung"
.SearchSubFolders = True
.Filename = "*.xls"
.Execute
For Each VarDat In .FoundFiles
If InStr(VarDat, "zz_Batch_ab_V3.0.xls") > 0 Then
Else
Application.EnableEvents = False
Set Mappe = Workbooks.Open(VarDat)
Application.EnableEvents = False
Application.ScreenUpdating = False
Mappe.Sheets("Financials").Unprotect ("tsoic")
With ActiveSheet ' Financials
.Range("Costs_FY2").Copy
.Range("Costs_FY1").PasteSpecial Paste:=xlValues
.Range("Costs_FY3").Copy
.Range("Costs_FY2").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Copy
.Range("Costs_Q1").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Value = "0"
Application.CutCopyMode = False         'Zwischenspeicher löschen
End With
Mappe.Close savechanges:=True
End If
Next VarDat
Application.ScreenUpdating = True
End With
End Sub


Grüße
Bernd

Anzeige
AW: lezte Frage
04.09.2007 19:07:24
Hajo_Zi
Hallo Bernd,
es soll doch bestimmt die Datei gespeichert werden und nicht das Blatt.
das kann ich nicht testen da 2007 Application.FileSearch nicht mer unterstützt.

Option Explicit
Sub kopieren_einfuegen()
Dim VarDat As Variant
Dim Mappe As Workbook
With Application.FileSearch
.NewSearch
.LookIn = "P:\Budgetplanung"
.SearchSubFolders = True
.Filename = "*.xls"
.Execute
Application.ScreenUpdating = False
For Each VarDat In .FoundFiles
If Not InStr(VarDat, "zz_Batch_ab_V3.0.xls") > 0 Then
Application.EnableEvents = False
Set Mappe = Workbooks.Open(VarDat)
Application.EnableEvents = False
With Mappe.Sheets("Financials")
.Unprotect ("tsoic")
.Range("Costs_FY2").Copy
.Range("Costs_FY1").PasteSpecial Paste:=xlValues
.Range("Costs_FY3").Copy
.Range("Costs_FY2").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Copy
.Range("Costs_Q1").PasteSpecial Paste:=xlValues
.Range("Costs_FY4").Value =0
Application.CutCopyMode = False         'Zwischenspeicher löschen
End With
Mappe.Close savechanges:=True
End If
Next VarDat
Application.ScreenUpdating = True
End With
Set Mappe = Nothing
End Sub


Gruß Hajo

Anzeige
Gelöst!!
04.09.2007 19:14:00
Bernd
Habe das Problem gerade selber gelöst. Trotzdem tausend Dank an Dich. Ohne Dich hätte ich es nicht geschafft!
Grüße
Bernd
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte kopieren ohne Formate in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA Werte zu kopieren, ohne die Formate zu übertragen, kannst du die PasteSpecial-Methode verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf einen VBA-Projektordner und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Sub WerteKopierenOhneFormate()
        ' Werte aus der ersten Zelle kopieren und in die zweite Zelle einfügen
        Worksheets("1").Cells(5, 1).Copy
        Worksheets("2").Cells(10, 1).PasteSpecial Paste:=xlValues
        Application.CutCopyMode = False 'Zwischenspeicher löschen
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus.

Dieser Code kopiert nur die Werte, ohne die Zellenformate zu übertragen.


Häufige Fehler und Lösungen

  • Fehlermeldung "Erwartet Anweisungsende": Stelle sicher, dass der Befehl PasteSpecial korrekt geschrieben ist. Der korrekte Syntax ist:

    .PasteSpecial Paste:=xlValues
  • Kein Ergebnis: Wenn die Zielzelle leer bleibt, überprüfe, ob die Quellzelle tatsächlich Werte enthält und dass die Zielzelle nicht geschützt ist.


Alternative Methoden

Wenn du eine andere Methode zum Kopieren von Werten ohne Formate verwenden möchtest, kannst du auch direkt die Werte zuweisen:

Sub WerteDirektKopieren()
    Worksheets("2").Cells(10, 1).Value = Worksheets("1").Cells(5, 1).Value
End Sub

Mit dieser Methode wird der Wert direkt in die Zielzelle übertragen, ohne Formate zu beeinflussen.


Praktische Beispiele

  1. Kopiere mehrere Zellen: Um mehrere Zellen zu kopieren, könnte dein Code so aussehen:

    Sub MehrereZellenKopieren()
        Worksheets("1").Range("A1:B10").Copy
        Worksheets("2").Range("A1").PasteSpecial Paste:=xlValues
        Application.CutCopyMode = False
    End Sub
  2. Kopieren in eine andere Arbeitsmappe:

    Sub WerteInAndereMappeKopieren()
        Dim wb As Workbook
        Set wb = Workbooks.Open("Pfad\Zur\Deiner\Mappe.xlsx")
    
        Worksheets("1").Cells(1, 1).Copy
        wb.Worksheets("2").Cells(1, 1).PasteSpecial Paste:=xlValues
        wb.Close SaveChanges:=True
        Application.CutCopyMode = False
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um Flackern beim Ausführen des Codes zu vermeiden.
  • Speichere deine Arbeit regelmäßig, insbesondere wenn du mit VBA arbeitest. Einmaliges Speichern kann viel Zeit sparen.
  • Teste deinen Code schrittweise, um Fehler schnell zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich nur Werte aus einer Zeile kopieren? Du kannst die Methode Range("A1:A10").Copy verwenden und anschließend PasteSpecial wie in den obigen Beispielen.

2. Was ist der Unterschied zwischen Copy und Value? Copy ist ein Befehl, der die Zelle kopiert, während Value die tatsächlichen Daten in die Zielzelle einfügt, ohne Formate zu übertragen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige