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

Forumthread: vba: copy selection and paste values

vba: copy selection and paste values
13.02.2007 23:41:00
Peter
Guten Abend
Des öftern muss ich einen markieren Bereich kopieren und gleich nur die Werte einfügen.
Wie muss mein Makro lauten? Geht das irgendwie wie unten?
Danke für ein Feedback.
Peter

Sub formel_in_wert()
With Selection
.Copy
"paste special value"
End With
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba: copy selection and paste values
13.02.2007 23:50:18
R@iner
Hi,

Sub Wert()
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
End Sub

Gruss Rainer
AW: vba: copy selection and paste values
14.02.2007 09:28:09
Peter
Hallo Rainer
Vielen Dank.
Nach Ausführen des Makros ist der kopierte Bereich immer noch im Zwischenspeicher (und könnte anderswo eingefügt werden).
Dies kann ja mit Esape abgebrochen werden. Wie wird dieser Befehl via VBA übergeben?
Danke für Feedback.
Peter
Anzeige
AW: vba: copy selection and paste values
14.02.2007 09:31:43
Hans
Hallo Peter,
füge ein:
Application.CutCopyMode = False
gruss hans
AW: vba: copy selection and paste values
14.02.2007 09:34:31
Peter
Hallo Hans
Vielen Dank für die schnelle (3.5 Min !!) Rückmeldung.
Bin immer wieder begeistert von diesem Forum.
Gruss, Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den obigen Code in das Modul ein.
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Markiere den Bereich, den Du kopieren möchtest.
  6. 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

  • Problem: Der kopierte Bereich bleibt im Zwischenspeicher.

    • Lösung: Füge Application.CutCopyMode = False am Ende des Makros ein. Dies deaktiviert den Kopiermodus und entfernt den Inhalt aus dem Zwischenspeicher.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Stelle sicher, dass Du eine Auswahl getroffen hast, bevor Du das Makro ausführst. Andernfalls wird der Code nicht funktionieren.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, um die Werte zu kopieren und einzufügen:

  1. Direktes Einfügen ohne VBA:

    • Kopiere den gewünschten Bereich mit STRG + C.
    • Rechtsklicke auf die Zielzelle und wähle Inhalte einfügen > Werte.
  2. 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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige