VBA: Werte kopieren ohne Formatierung in Excel
Schritt-für-Schritt-Anleitung
Um in Excel mit VBA nur die Werte aus einem Bereich zu kopieren, ohne die Formatierungen zu übernehmen, kannst du folgendes Vorgehen nutzen:
-
Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
-
Erstelle ein neues Modul (Rechtsklick auf "VBAProject" > Einfügen > Modul).
-
Füge den folgenden Code in das Modul ein:
Sub KopiereWerte()
Workbooks("Quelle.xls").Sheets("Table1").UsedRange.Copy
Workbooks("Ziel.xls").Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
-
Passe die Namen der Arbeitsmappen und Blätter an deine Bedürfnisse an.
-
Führe das Makro aus (F5) und die Werte werden ohne Formatierungen in die Zieltabelle kopiert.
Häufige Fehler und Lösungen
-
Problem: Die Formatierungen werden trotzdem kopiert.
- Lösung: Stelle sicher, dass du die Methode
.PasteSpecial
mit den Argumenten Paste:=xlValues
verwendest, um nur die Werte zu kopieren.
-
Problem: Fehlermeldung, wenn die Arbeitsmappe nicht geöffnet ist.
- Lösung: Stelle sicher, dass die Quelldatei ("Quelle.xls") und die Zieldatei ("Ziel.xls") geöffnet sind, bevor du das Makro ausführst.
Alternative Methoden
Wenn du keine VBA-Makros verwenden möchtest, kannst du die folgenden Schritte in Excel manuell durchführen:
- Wähle den Bereich, den du kopieren möchtest.
- Drücke
Strg + C
, um zu kopieren.
- Wechsle zur Zieltabelle und klicke auf die Zelle, in der die Werte eingefügt werden sollen.
- Klicke mit der rechten Maustaste und wähle "Inhalte einfügen" und dann "Werte".
Diese Methode funktioniert, ist jedoch nicht so automatisiert wie die VBA-Lösung.
Praktische Beispiele
Hier ist ein Beispiel für einen Kopierbefehl, der den gesamten benutzten Bereich einer Tabelle in ein anderes Arbeitsblatt überträgt:
Sub KopiereBenutztenBereich()
Workbooks("Mappe3").Sheets("Start").UsedRange.Copy _
Workbooks("Mappe3").Sheets("Ziel").Range("A1").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Diese Methode verwendet UsedRange
, um alle aktiven Zellen zu kopieren, und stellt sicher, dass nur die Werte eingefügt werden.
Tipps für Profis
- Nutze die
Application.CutCopyMode = False
Zeile, um den Kopiermodus zu deaktivieren und die Zwischenablage zu leeren, was die Leistung verbessern kann.
- Wenn du häufig VBA-Anweisungen für das Kopieren von Werten nutzt, erstelle eine Funktion, die diese Schritte zusammenfasst, um wiederholte Eingaben zu vermeiden.
FAQ: Häufige Fragen
1. Frage
Kann ich den Befehl auch anpassen, um nur bestimmte Zellen zu kopieren?
Antwort: Ja, du kannst den Bereich anpassen, den du kopieren möchtest. Ersetze UsedRange
durch den spezifischen Zellbereich, z.B. Range("A1:B10")
.
2. Frage
Wie kann ich mehrere Blätter gleichzeitig kopieren?
Antwort: Du kannst eine Schleife verwenden, um durch die Blätter zu iterieren und den Kopierbefehl für jedes Blatt auszuführen.