Hoja de trabajo de copia de VBA: ¿Cómo usar la hoja de trabajo. Copiar?

Hoja de trabajo de copia de Excel VBA

A veces, es posible que necesitemos copiar un rango específico de celdas de una hoja de trabajo a otra o en la misma hoja de trabajo. En algunos casos, es posible que necesitemos copiar toda la hoja de trabajo a una nueva hoja de trabajo. Es posible que esté familiarizado con la copia de un rango de celdas, pero ¿qué tal si copia la hoja de trabajo completa usando VBA? En este artículo, le daremos una explicación detallada de cómo copiar la hoja de trabajo a otro libro de trabajo en VBA.

Hoja de trabajo. Copiar método en VBA

Primero, observe la sintaxis del método Copia de hoja de trabajo.

Hoja de trabajo (). Copiar (Antes, Después)

El método de copia tiene dos argumentos antes y después; ambos son opcionales.

  1. Antes: la hoja de trabajo específica que estamos copiando. Si especifica esto, no puede usar el argumento Después .
  2. Después: la hoja de trabajo específica que estamos copiando. Si especifica esto, no puede usar el argumento Antes .

Dado que ambos son argumentos opcionales, si lo dejó en blanco, la hoja de trabajo de destino se copiará en un nuevo libro de trabajo, Microsoft Excel crea automáticamente un nuevo libro de trabajo.

Veremos ejemplos de lo mismo ahora en la sección de ejemplos.

Ejemplos de copia de hoja de trabajo en VBA

Ejemplo 1

Por ejemplo, mire los datos a continuación en la hoja de trabajo llamada "Enero".

Tenemos los datos anteriores en la hoja de trabajo denominada "Enero" .

  • Por lo tanto, debemos copiar la hoja de trabajo anterior después de la hoja de trabajo denominada " Hoja1 ". Primero, consulte la hoja de trabajo utilizando el objeto de hojas de trabajo.

Código:

Sub Worksheet_Copy_Example1 () Worksheets ("Enero") End Sub
  • A continuación, ingrese el método " Copiar ".

Código:

Sub Worksheet_Copy_Example1 () Worksheets ("enero"). Copiar End Sub
  • Como puede ver arriba, cuando comenzamos a escribir, no podemos ver la lista de IntelliSense para el objeto de hojas de trabajo, este es uno de los problemas importantes para los principiantes si usan directamente el objeto WORKSHEETS, pero esto se puede eliminar mediante el uso de variables, así que defina el variable como " Hoja de trabajo ".

Código:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet End Sub
  • Ahora, para esta variable, establezca la referencia de la hoja de trabajo " Enero ".

Código:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("enero") End Sub
  • Entonces, ahora usando la variable " Ws " podemos referirnos fácilmente a la hoja de trabajo llamada " Enero ". Así que ingrese el nombre de la variable " Ws " y elija el método " Copiar ".

Ahí vamos podemos ver la lista de IntelliSense mostrando todas las propiedades y métodos de los objetos de la hoja de trabajo, gracias a la declaración de variable.

  • Elija el método " Copiar " y podremos ver los argumentos del método " Copiar ".
  • Ya que necesitamos copiar la hoja de trabajo después de la hoja de trabajo " Hoja1 ", primero acceda al argumento " Después " ingresando el nombre del argumento como se muestra a continuación.

Después de resaltar el argumento, ya que hemos utilizado el nombre del argumento con el símbolo " igual por definición " (: =)

  • Ahora ingrese el nombre de la hoja usando el objeto " Hojas ".

Código:

Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Enero") Ws.Copy After: = Sheets ("Sheet1") End Sub
  • Hemos terminado. Esto copiará la hoja de trabajo " Enero " después de la hoja de trabajo " Hoja1 ".

Ahí tienes, hemos copiado la hoja de trabajo de enero a la derecha de "Hoja1". Una de las cosas predeterminadas aquí es que el nombre de la hoja de trabajo es el mismo que el de la hoja copiada con un recuento numérico de la hoja de trabajo entre corchetes, en este caso, es “(2)”.

  • Para cambiar el nombre de la hoja de trabajo, agregue el siguiente fragmento de código al código anterior.
  • 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.
  • El nombre predeterminado de la hoja de trabajo copiada será el mismo seguido del recuento de esa hoja de trabajo copiada.

Articulos interesantes...