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:
| Sub | CopySheetValues() |
| Dim | SourceSheet As Worksheet |
| Dim | DestinationSheet As Worksheet |
| Set | SourceSheet = ThisWorkbook.Sheets("Quellliste") |
| Set | DestinationSheet = ThisWorkbook.Sheets("Zielliste") |
| SourceSheet.Range("A1:Z100").Copy | DestinationSheet.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-Code | Die 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.