VBA Copy Worksheet - Verwendung von Worksheet.Copy?

Excel VBA-Arbeitsblatt kopieren

Manchmal müssen wir möglicherweise einen bestimmten Zellbereich von einem Arbeitsblatt in ein anderes oder in dasselbe Arbeitsblatt selbst kopieren. In einigen Fällen müssen wir möglicherweise das gesamte Arbeitsblatt in ein neues Arbeitsblatt kopieren. Sie sind vielleicht mit dem Kopieren einer Reihe von Zellen vertraut, aber wie wäre es, wenn Sie das gesamte Arbeitsblatt selbst mit VBA kopieren. In diesem Artikel geben wir Ihnen eine detaillierte Erklärung, wie Sie das Arbeitsblatt in eine andere Arbeitsmappe in VBA kopieren.

Worksheet.Copy-Methode in VBA

Schauen Sie sich zunächst die Syntax der Arbeitsblattkopiermethode an.

Arbeitsblatt (). Kopieren (vorher, nachher)

Die Kopiermethode enthält zwei Argumente. Vorher & Nachher; beide sind optional.

  1. Vorher: Das Zielarbeitsblatt, das wir kopieren. Wenn Sie dies angeben, können Sie das After- Argument nicht verwenden .
  2. Nachher: Das Zielarbeitsblatt, das wir kopieren. Wenn Sie dies angeben, können Sie das Argument Before nicht verwenden .

Da dies beide optionale Argumente sind, wenn Sie es leer lassen, wird das Zielarbeitsblatt in eine neue Arbeitsmappe kopiert. Microsoft Excel erstellt automatisch eine neue Arbeitsmappe.

Beispiele dafür sehen wir jetzt im Abschnitt Beispiele.

Beispiele für das Kopieren von Arbeitsblättern in VBA

Beispiel 1

Sehen Sie sich beispielsweise die folgenden Daten im Arbeitsblatt mit dem Namen "Januar" an.

Wir haben die obigen Daten im Arbeitsblatt mit dem Namen "Januar" .

  • Wir müssen also das obige Arbeitsblatt nach dem Arbeitsblatt mit dem Namen " Sheet1 " kopieren . Lesen Sie zunächst das Arbeitsblatt mithilfe des Arbeitsblattobjekts.

Code:

Sub Worksheet_Copy_Example1 () Arbeitsblätter ("Januar") End Sub
  • Geben Sie als Nächstes die Methode " Kopieren " ein.

Code:

Sub Worksheet_Copy_Example1 () Arbeitsblätter ("Januar"). Kopieren End Sub
  • Wie Sie oben sehen können, wird beim Beginn der Eingabe die IntelliSense-Liste für Arbeitsblattobjekte nicht angezeigt. Dies ist eines der Hauptprobleme für Anfänger, wenn sie das WORKSHEETS-Objekt direkt verwenden. Dies kann jedoch durch die Verwendung von Variablen behoben werden. Definieren Sie also das Variable als " Arbeitsblatt ".

Code:

Sub Worksheet_Copy_Example1 () Dim Ws als Worksheet End Sub
  • Stellen Sie nun für diese Variable die Referenz des Arbeitsblatts „ Januar “ ein.

Code:

Sub Worksheet_Copy_Example1 () Dim Ws als Arbeitsblatt Set Ws = Worksheets ("Januar") End Sub
  • Wenn wir nun die Variable " Ws " verwenden, können wir leicht auf das Arbeitsblatt mit dem Namen " Januar " verweisen . Geben Sie also den Variablennamen " Ws " ein und wählen Sie die Methode " Kopieren ".

Dort können wir die IntelliSense-Liste sehen, die dank der Variablendeklaration alle Eigenschaften und Methoden von Arbeitsblattobjekten zeigt.

  • Wählen Sie die Methode " Kopieren ", und wir können Argumente der Methode " Kopieren " sehen.
  • Da wir das Arbeitsblatt nach dem Arbeitsblatt " Sheet1 " kopieren müssen, greifen Sie zuerst auf das Argument " After " zu, indem Sie den Argumentnamen wie folgt eingeben .

Nachdem das Argument hervorgehoben wurde, haben wir den Argumentnamen mit dem Symbol " per Definition gleich " (: =) verwendet.

  • Geben Sie nun den Blattnamen mit dem Objekt " Blätter " ein.

Code:

Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Arbeitsblätter ("Januar") Ws.Copy After: = Sheets ("Sheet1") End Sub
  • Wir sind fertig. Dadurch wird das Arbeitsblatt " Januar " nach dem Arbeitsblatt " Blatt1 " kopiert .

Los geht's, wir haben das Januar-Arbeitsblatt rechts von „Sheet1“ kopiert. Eine der Standardeinstellungen hier ist, dass der Name des Arbeitsblatts mit dem Namen des kopierten Blattes mit einer numerischen Anzahl des Arbeitsblatts in der Klammer identisch ist. In diesem Fall ist es „(2)“.

  • Fügen Sie zum Ändern des Arbeitsblattnamens den folgenden Code zum obigen Code hinzu.
  • So the overall code is below.

Code:

Sub Worksheet_Copy_Example1() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets("Sheet1") ActiveSheet.Name = “New Copied Sheet” End Sub
  • Now run the code and see what happens.

Example #2

Similarly, if you want to copy the worksheet “Sheet1” before the worksheet “January” uses the below code.

Code:

Sub Worksheet_Copy_Example2() Dim Ws As Worksheet Set Ws = Worksheets("Sheet1") Ws.Copy Before:=Sheets("January") ActiveSheet.Name = "New Sheet1" End Sub
  • So this will create a sheet-like the below.

Example #3

Similarly, if you want to copy the worksheet after the last worksheet then use the below code.

Code:

Sub Worksheet_Copy_Example3() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "Last Sheet" End Sub

Output:

The only change we made is we have used “Sheets. Count” method to count how many sheets are there in the workbook.

Example #4

Similarly, if you want to copy the worksheet before the first worksheet then use the below code.

Code:

Sub Worksheet_Copy_Example4() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets(1) ActiveSheet.Name = "First Sheet" End Sub

Output:

In this case, we have used “Sheets(1)” so this will place the worksheet copied before the first worksheet of the workbook.

Things to Remember

  • Suppose you don’t use either Before & After argument of the Worksheet. Copy worksheets will be copied to the new workbook altogether.
  • Der Standardname des kopierten Arbeitsblatts ist derselbe, gefolgt von der Anzahl des kopierten Arbeitsblatts.

Interessante Beiträge...