VBA: Auswahl kopieren und Werte einfügen
Schritt-für-Schritt-Anleitung
Um einen markierten Bereich in Excel mit VBA zu kopieren und nur die Werte einzufügen, kannst Du folgendes Makro verwenden:
Sub Wert()
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False ' Deaktiviert den Kopiermodus
End Sub
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu starten.
- Klicke auf
Einfügen > Modul, um ein neues Modul zu erstellen.
- Füge den obigen Code in das Modul ein.
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Markiere den Bereich, den Du kopieren möchtest.
- Führe das Makro aus, indem Du
ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.
Häufige Fehler und Lösungen
Alternative Methoden
Es gibt verschiedene Möglichkeiten, um die Werte zu kopieren und einzufügen:
-
Direktes Einfügen ohne VBA:
- Kopiere den gewünschten Bereich mit
STRG + C.
- Rechtsklicke auf die Zielzelle und wähle
Inhalte einfügen > Werte.
-
Verwendung von vba selection.copy:
- Du kannst die Methode
Selection.Copy nutzen und dann die gewünschte Paste-Methode angeben.
Sub CopyValues()
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
Praktische Beispiele
- Beispiel 1: Werte aus einem bestimmten Bereich kopieren.
Sub CopySpecificRange()
Range("A1:B10").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
- Beispiel 2: Mit
vba selection.copy den gesamten Arbeitsblattbereich kopieren und nur die Werte einfügen.
Sub CopyAllValues()
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
Tipps für Profis
- Nutze
xlPasteValues in Kombination mit vba copy paste, um sicherzustellen, dass nur die Werte ohne Formatierungen eingefügt werden.
- Verwende
Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren, was die Leistung verbessert.
Sub EfficientCopy()
Application.ScreenUpdating = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
FAQ: Häufige Fragen
1. Wie kann ich den Kopiermodus nach dem Einfügen deaktivieren?
Du kannst Application.CutCopyMode = False verwenden, um den Kopiermodus zu deaktivieren.
2. Was ist der Unterschied zwischen Copy und PasteSpecial in VBA?
Copy wird verwendet, um einen Bereich in die Zwischenablage zu kopieren, während PasteSpecial verwendet wird, um spezifische Inhalte (z. B. nur Werte) einzufügen.
3. Wie kann ich mehrere Bereiche gleichzeitig kopieren?
Du kannst mehrere Bereiche mit einem Array kopieren und dann nacheinander die Werte einfügen.
Sub CopyMultipleRanges()
Union(Range("A1:A10"), Range("B1:B10")).Copy
Range("C1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub