VBA Value Paste & PasteSpecial

Dieses Tutorial zeigt Ihnen, wie Sie PasteSpecial in VBA verwenden, um nur bestimmte Zelleneigenschaften (z. B. Werte, Formate) einzufügen.

Wenn Sie in Excel eine Zelle kopieren und einfügen, kopieren Sie alle Eigenschaften der Zelle und fügen Sie sie ein: Werte, Formate, Formeln, Zahlenformatierung, Rahmen usw.:

Stattdessen können Sie "Spezial einfügen", um nur bestimmte Zelleneigenschaften einzufügen. In Excel kann das Menü Inhalte einfügen mit der Tastenkombination STRG + ALT + V (nach dem Kopieren einer Zelle) aufgerufen werden:

Hier sehen Sie alle Kombinationen von Zelleigenschaften, die Sie einfügen können.

Wenn Sie ein Makro aufzeichnen, während Sie das Menü „Spezial einfügen“ verwenden, können Sie einfach den generierten Code verwenden. Dies ist oft der einfachste Weg, VBA zum Einfügen von Inhalten zu verwenden.

Werte einfügen

Werte einfügen fügt nur die Zelle „Wert“ ein. Wenn die Zelle eine Formel enthielt, fügt Werte einfügen das Formelergebnis ein.

Mit diesem Code werden Werte für eine einzelne Zelle auf demselben Arbeitsblatt kopiert und eingefügt:

12 Bereich("A1").KopierenRange("B1").PasteSpecial Paste:=xlPasteValues

Kopieren und Werte in ein anderes Blatt einfügen

In diesem Beispiel werden Werte für einzelne Zellen auf verschiedenen Arbeitsblättern kopiert und eingefügt

12 Sheets("Sheet1").Range("A1").CopySheets("Sheet2").Range("B1").PasteSpecial Paste:=xlPasteValues

In diesen Beispielen werden Werte für einen Zellbereich kopiert und eingefügt:

Bereiche zum Kopieren und Einfügen von Werten

12 Bereich("A1:B3").KopierenRange("C1").PasteSpecial Paste:=xlPasteValues

Spalten kopieren und Werte einfügen

12 Spalten("A").CopyColumns("B").PasteSpecial Paste:=xlPasteValues

Zeilen kopieren und Werte einfügen

12 Zeilen(1).KopierenZeilen(2).PasteSpecial Paste:=xlPasteValues

Werte und Zahlenformate einfügen

Beim Einfügen von Werten wird nur der Zellenwert eingefügt. Es wird keine Formatierung eingefügt, auch keine Zahlenformatierung.

Wenn Sie Werte einfügen, möchten Sie wahrscheinlich auch die Zahlenformatierung einbeziehen, damit Ihre Werte formatiert bleiben. Schauen wir uns ein Beispiel an.

Hier werden wir eine Zelle mit einem Prozentsatz einfügen:

12 Sheets("Sheet1").Columns("D").CopySheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues

Beachten Sie, wie die prozentuale Zahlenformatierung verloren geht und stattdessen ein schlampiger Dezimalwert angezeigt wird.

Verwenden wir stattdessen die Formate Werte einfügen und Zahlen:

12 Sheets("Sheet1").Columns("D").CopySheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats

Jetzt können Sie sehen, dass auch die Zahlenformatierung eingefügt wird, wobei das Prozentformat beibehalten wird.

.Wert statt .Einfügen

Anstatt Werte einzufügen, können Sie die Value-Eigenschaft des Range-Objekts verwenden:

Dadurch wird der Zellenwert von A2 gleich dem Zellenwert von B2

1 Range("A2").Value = Range("B2").Value

Sie können auch einen Zellbereich gleich dem Wert einer einzelnen Zelle festlegen:

1 Bereich("A2:C5").Wert = Bereich("A1").Wert

oder ein Zellbereich, der einem anderen Zellbereich identischer Größe entspricht:

1 Range("B2:D4").Value = Range("A1:C3").Value

Die Verwendung der Value-Eigenschaft erfordert weniger Eingaben. Wenn Sie sich mit Excel VBA vertraut machen möchten, sollten Sie außerdem mit der Arbeit mit der Value-Eigenschaft von Zellen vertraut sein.

Zellenwert vs. Value2-Eigenschaft

Technisch gesehen ist es besser, die Value2-Eigenschaft einer Zelle zu verwenden. Value2 ist etwas schneller (dies ist nur bei extrem großen Berechnungen von Bedeutung) und die Value-Eigenschaft liefert möglicherweise ein abgeschnittenes Ergebnis der Zelle, die als Währung oder Datum formatiert ist. Allerdings verwenden über 99% des Codes, den ich gesehen habe, .Value und nicht .Value2. Ich persönlich verwende .Value2 nicht, aber Sie sollten sich bewusst sein, dass es existiert.

1 Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

Wir haben einen "Copy Paste Code Builder" erstellt, der es einfach macht, VBA-Code zum Kopieren (oder Ausschneiden) und Einfügen von Zellen zu generieren. Der Baumeister ist Teil unserer VBA-Add-In: AutoMacro.

AutoMakro enthält auch viele andere Code-Generatoren, ein umfangreicher Codebibliothek, und mächtig Codierungstools.

Inhalte einfügen - Formate und Formeln

Neben den Werten einfügen sind die gängigsten Optionen zum Einfügen von Inhalten Formate einfügen und Formeln einfügen

Formate einfügen

Mit Formaten einfügen können Sie alle Zellformatierungen einfügen.

12 Bereich("A1:A10").KopierenRange("B1:B10").PasteSpecial Paste:=xlPasteFormats

Formeln einfügen

Formeln einfügen fügt nur die Zellformeln ein. Dies ist auch äußerst nützlich, wenn Sie Zellformeln kopieren möchten, aber keine Zellhintergrundfarben (oder andere Zellformatierungen) kopieren möchten.

12 Bereich("A1:A10").KopierenRange("B1:B10").PasteSpecial Paste:=xlPasteFormulas

Formeln und Zahlenformate einfügen

Ähnlich wie beim Einfügen von Werten und Zahlenformaten oben können Sie auch Zahlenformate zusammen mit Formeln kopieren und einfügen

Hier kopieren wir eine Zellformel nur mit Buchhaltungsnummernformatierung und Einfügen von Formeln.

12 Sheets("Sheet1").Range("D3").CopySheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas

Beachten Sie, wie die Zahlenformatierung verloren geht und stattdessen ein nachlässiger, nicht gerundeter Wert angezeigt wird.

Verwenden wir stattdessen die Formate Formeln und Zahlen einfügen:

12 Sheets("Sheet1").Range("D3").CopySheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats

Jetzt können Sie sehen, dass auch die Zahlenformatierung eingefügt wird, wobei das Buchhaltungsformat beibehalten wird.

Spezial einfügen – Transponieren und Leerstellen überspringen

Spezial einfügen - Transponieren

Mit Paste Special Transpose können Sie Zellen kopieren und einfügen, indem Sie die Ausrichtung von oben-unten nach links-rechts (oder umgekehrt) ändern:

12 Sheets("Sheet1").Range("A1:A5").CopySheets("Sheet1").Range("B1").PasteSpecial Transpose:=True

Spezial einfügen - Leerzeichen überspringen

Leerzeichen überspringen ist eine spezielle Option zum Einfügen, die anscheinend nicht so oft verwendet wird, wie sie sein sollte. Es ermöglicht Ihnen, beim Kopieren und Einfügen nur nicht leere Zellen zu kopieren. Leere Zellen werden also nicht kopiert.

In diesem Beispiel unten. Wir kopieren Spalte A, fügen regelmäßig in Spalte B ein und überspringen das Einfügen von Leerzeichen in Spalte C. Sie können sehen, dass die leeren Zellen im Bild unten nicht in Spalte C eingefügt wurden.

123 Sheets("Sheet1").Range("A1:A5").CopySheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=FalseSheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True

Andere spezielle Optionen zum Einfügen

Spezial einfügen - Kommentare

1 Sheets("Sheet1").Range("A1").Copy Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments

Spezial einfügen - Validierung

12 Sheets("Sheet1").Range("A1:A4").CopySheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation

Inhalte einfügen - Alle mit Quelldesign

123 Arbeitsmappen(1).Sheets("Sheet1").Range("A1:A2").CopyArbeitsmappen(2).Sheets("Sheet1").Range("A1").PasteSpecialArbeitsmappen(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

Spezial einfügen – Alle außer Rahmen

123 Bereich("B2:C3").KopierenRange("E2").PasteSpecialRange("H2").PasteSpecial xlPasteAllExceptBorders

PasteSpecial - Spaltenbreiten

Ein persönlicher Favorit von mir. PasteSpecial Column Widths kopiert die Spaltenbreite und fügt sie ein.

123 Bereich("A1:A2").KopierenRange("C1").PasteSpecialRange("E1").PasteSpecial xlPasteColumnWidths

PasteSpecial - Alle MergingConditionalFormats

123 Bereich("A1:A4").KopierenRange("C1").PasteSpecialRange("E1").PasteSpecial xlPasteAllMergingConditionalFormats

wave wave wave wave wave