Zum Hauptinhalt springen

VBA Excel: Kopieren eines Arbeitsblatts nur mit Werten

Es gibt viele Tools und Funktionen in Microsoft Excel, die Ihnen helfen, Ihren Workflow zu vereinfachen und zu automatisieren. Ein solches Tool ist VBA (Visual Basic for Applications), eine Programmiersprache, die speziell für die Arbeit mit Excel entwickelt wurde.

Das Kopieren eines Arbeitsblatts ist eine der üblichen Aufgaben, die beim Arbeiten mit Daten in Excel auftreten. Manchmal müssen wir jedoch nur Werte kopieren, ohne Formeln und andere Formatierungselemente. Um dieses Problem zu lösen, können Sie VBA-Code verwenden, mit dem Sie den Kopiervorgang automatisieren können.

Es gibt eine spezielle Methode in VBA - PasteSpecial, mit der Sie auswählen können, welche Elemente des kopierten Bereichs eingefügt werden sollen. Um nur Werte zu kopieren, können wir die xlPasteValues-Konstante verwenden. Im folgenden Codebeispiel wird veranschaulicht, wie nur Werte aus dem Arbeitsblatt "Quellblatt" in ein neues Arbeitsblatt kopiert werden:

Sub CopyValuesOnly()

Sheets("Quellblatt").Range("A1:Z100").Copy

Sheets.Add

ActiveSheet.PasteSpecial Paste:=xlPasteValues

End Sub

Im obigen Code kopieren wir zuerst den gewünschten Bereich (in diesem Fall von Zelle A1 bis Z100) in das Arbeitsblatt "Quellblatt" und erstellen dann mit der Sheets-Methode ein neues Arbeitsblatt.Add und fügen Sie die kopierten Werte mithilfe der PasteSpecial-Methode ein, indem Sie die xlPasteValues-Konstante als Argument angeben.

Die Verwendung von VBA in Excel ermöglicht daher die Automatisierung vieler Aufgaben, einschließlich des Kopierens eines Arbeitsblatts nur mit Werten. Dies hilft Ihnen, Ihren Workflow zu beschleunigen und zu vereinfachen, insbesondere bei der Arbeit mit großen Datenmengen.

Methode 1: Verwenden des Befehls PasteSpecial

Um diese Methode zu verwenden, benötigen Sie den folgenden VBA-Code:

SubCopySheetValues()
DimSourceSheet As Worksheet
DimDestinationSheet As Worksheet
SetSourceSheet = ThisWorkbook.Sheets("Quellliste")
SetDestinationSheet = ThisWorkbook.Sheets("Zielliste")
SourceSheet.Range("A1:Z100").CopyDestinationSheet.Range("A1").PasteSpecial xlPasteValues
End Sub

In diesem Code sollten Sie "Quellliste" und "Zielliste" durch die Namen Ihrer Arbeitsblätter ersetzen, mit denen Sie arbeiten.

In der SourceSheet-Zeile.Range("A1:Z100").Sie müssen den Zellbereich angeben, den Sie kopieren möchten.

Nach dem Ausführen dieses Codes werden nur die Werte aus dem Bereich in das neue Arbeitsblatt kopiert. Formeln und Verweise auf andere Zellen werden nicht kopiert.

Methode 2: Verwenden des Befehls Value

Mit dieser Methode können Sie den folgenden Code verwenden, um ein Blatt nur mit Werten zu kopieren:

Sub CopySheetValues()Dim SourceSheet As WorksheetDim DestinationSheet As Worksheet' Установить ссылки на исходный и целевой листыSet SourceSheet = Worksheets("Исходный лист")Set DestinationSheet = Worksheets("Целевой лист")' Очистить целевой лист перед копированиемDestinationSheet.UsedRange.ClearContents' Копирование значений из исходного листа в целевойSourceSheet.Cells.Copy Destination:=DestinationSheet.Cells' Применить форматирование и стили (если нужно)DestinationSheet.Cells.PasteSpecial Paste:=xlPasteFormatsDestinationSheet.Cells.PasteSpecial Paste:=xlPasteColumnWidths' Завершить операцию копированияApplication.CutCopyMode = FalseEnd Sub

In diesem Code definieren wir zuerst Verweise auf die Quell- und Zielblätter mit der Set- Anweisung. Dann bereinigen wir den Inhalt des Zielblatts mit der ClearContents- Methode. Als nächstes kopieren wir die Werte aus dem Quellblatt mit der Copy-Methode in das Zielblatt und geben den Zielbereich der Zellen mithilfe der Cells-Eigenschaft an. Verwenden Sie die PasteSpecial-Methode, um Formatierungen und Stile (falls erforderlich) anzuwenden. Schließlich schließen wir den Kopiervorgang ab, indem wir die CutCopyMode-Eigenschaft auf False setzen.

Die Verwendung der Value-Methode ist eine effiziente Möglichkeit, ein Arbeitsblatt nur mit Werten in Excel mit VBA zu kopieren. Es ermöglicht Ihnen, nur die Zellenwerte beizubehalten, wobei Formate, Formeln und andere Attribute ignoriert werden. Dies kann nützlich sein, wenn Sie eine Kopie eines Arbeitsblatts erstellen möchten, ohne auf die ursprünglichen Daten oder die Struktur des Arbeitsblatts zu verweisen.

Methode 3: Verwenden des Befehls Array

Beispiel für die Verwendung des Befehls Array:

VBA-CodeDie Beschreibung
Sub CopySheetWithArray() Starten einer Unterroutine
Dim srcSheet As Worksheet Deklarieren einer Variablen für das Quellblatt
Dim destSheet As Worksheet Deklarieren einer Variablen für ein neues Arbeitsblatt
Dim srcRange As Range Deklarieren einer Variablen für einen Wertebereich im Quellblatt
Set srcSheet = ThisWorkbook.Sheets("Quellliste") Zuweisen eines Werts zu srcSheet zu einem Quellblatt
Set destSheet = ThisWorkbook.Sheets.Add Erstellen eines neuen Arbeitsblatts und Zuweisen eines Werts zu destSheet
Set srcRange = srcSheet.UsedRange Zuweisen eines Werts zu srcRange zum verwendeten Wertebereich im Quellblatt
destSheet.Range("A1").Resize(srcRange.Rows.Count, srcRange.Columns.Count).Value = srcRange.Value Kopieren von Werten aus dem srcRange-Array in ein neues Arbeitsblatt, beginnend mit der ersten Zelle
End Sub Ende des Unterprogramms

In diesem Beispiel zeigt die Variable srcSheet auf das zu kopierende Quellblatt. Die destSheet-Variable verweist auf ein neues Arbeitsblatt, das mit dem Befehl Sheets erstellt wird.Add(). Der srcRange-Bereich wird als verwendeter Wertebereich im Quellblatt deklariert.

Befehl destSheet.Range("A1").Resize(srcRange.Rows.Count, srcRange.Columns.Count).Value = srcRange.Value kopiert die Werte aus dem srcRange-Array und ersetzt die Werte im Bereich A1:Z im neuen Arbeitsblatt.

Mit dem Befehl Array können Sie ein Arbeitsblatt nur mit Werten in VBA Excel kopieren.