Hoja de eliminación de VBA - ¿Cómo eliminar la hoja de trabajo usando el código VBA?

Hoja de eliminación de Excel VBA

Para eliminar la hoja en VBA, tenemos un método Eliminar hoja de trabajo. Para aplicar este método, primero debemos identificar qué hoja estamos eliminando llamando al nombre de la hoja. Tenemos dos métodos para hacer lo mismo, primero escribimos directamente sheet1.delete y el segundo método es sheets (sheet1) .delete.

Entonces la sintaxis sigue.

Hojas de trabajo ("Nombre de la hoja de trabajo"). Eliminar

O

Hojas ("Nombre de hoja"). Eliminar

Entonces, primero, necesitamos especificar el nombre de la hoja usando la Hoja de Trabajo o el Objeto de Hojas , luego, más tarde, podemos usar el método "Eliminar" .

¿Cómo eliminar hojas de Excel usando código VBA?

Ejemplo # 1 - Eliminar hoja de trabajo usando su nombre

Suponga que tiene muchas hojas y, para eliminar la hoja de trabajo en particular, debemos mencionar la hoja de trabajo por su nombre. Por ejemplo, tengo 3 hojas diferentes llamadas "Ventas 2016", "Ventas 2017" y "Ventas 2018".

Si quiero eliminar la hoja llamada " Ventas 2017 " , entonces tengo que mencionar el nombre de la hoja como se muestra a continuación.

Código:

Sub Delete_Example1 () Hojas de trabajo ("hojas 2017"). End Sub

El problema de mencionar el nombre de la hoja de trabajo directamente es que no podemos ver la lista IntelliSense de VBA. De todos modos, menciona el método como " Eliminar".

Código:

Sub Delete_Example1 () Worksheets ("hojas 2017"). Delete End Sub

Así que esto eliminará la hoja denominada " Ventas 2017 ".

Error al eliminar la hoja de trabajo: si intentamos eliminar la hoja de trabajo que no existe o si mencionamos incorrectamente el nombre de la hoja de trabajo, obtendremos el error de VBA como "Subíndice fuera de rango".

En lo anterior, recibí el error "Subíndice fuera de rango" porque, en mi libro de trabajo, no hay un nombre de hoja llamado "Ventas 2017".

Ejemplo n. ° 2 - Eliminar hoja de trabajo por su nombre con variables

Como hemos visto en el ejemplo anterior, en el momento en que nos referimos al nombre de la hoja de trabajo usando el objeto Worksheets, no podemos ver la lista de IntelliSense. Para ver la lista de IntelliSense, necesitamos usar variables.

Paso 1: Primero, declare la variable como Hoja de trabajo .

Código:

Sub Delete_Example2 () Dim Ws As Worksheet End Sub

Paso 2: Dado que la hoja de trabajo es una variable de objeto, necesitamos establecer la variable en la hoja de trabajo específica usando la palabra " SET ".

Código:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Ventas 2017") End Sub

Ahora la variable "Ws" se refiere a la hoja de trabajo denominada "Ventas 2017".

Paso 3: Ahora, usando la variable “ Ws ”, podemos acceder a toda la lista IntelliSense de la hoja de trabajo.

Código:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Ventas 2017") Ws. End Sub

Paso 4: De la lista IntelliSense, seleccione el método " Eliminar ".

Código:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Ventas 2017") Ws.Delete End Sub

Así, usando variables, podemos acceder a la lista de IntelliSense.

Ejemplo n. ° 3 - Eliminar hoja de trabajo activa

La hoja activa no es más que cualquier hoja de trabajo activa o seleccionada en ese momento. Para este método, no necesitamos mencionar el nombre de la hoja de trabajo. Por ejemplo, mire el siguiente código VBA.

ActiveSheet.Delete

En este momento, la hoja activa es "Ventas 2017".

Si ejecuto el código, eliminará la hoja activa, es decir, "Ventas 2017".

Ahora seleccionaré "Ventas 2016".

Ahora eliminará la hoja activa, es decir, "Ventas 2016".

Like this, we can use the “Active Sheet” object to delete the worksheet.

Note: To use this method, we need to absolutely sure of what we are doing with the Active Sheet and which sheet is going to be an active sheet.

Example #4 - Delete More than One Worksheet

In our above examples, we have seen how to delete a single sheet, but what if we have multiple worksheets? Let’s say we want to delete 10 worksheets.

We cannot keep writing 10 lines of code to delete the worksheet, so we need to use loops to loop through the collection of worksheets and delete them.

The below code will loop through the worksheets and delete all the worksheets in the workbook.

Code:

Sub Delete_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub

El código anterior arrojará un error porque intenta eliminar todas las hojas del libro. Entonces, para evitar esto, necesitamos retener al menos una hoja de trabajo.

Si queremos eliminar todas las hojas de trabajo excepto la hoja activa, entonces necesitamos usar el siguiente código.

Código:

Sub Delete_Example2 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets If ActiveSheet.Name Ws.Name Entonces Ws.Delete End If Next Ws End Sub

De manera similar, si no queremos eliminar una hoja de trabajo específica, sino eliminar todas las demás hojas de trabajo, podemos usar el siguiente código.

Código:

Sub Delete_Example2 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets If Ws.Name "Sales 2018" Then 'Puede cambiar el nombre de la hoja de trabajo Ws.Delete End If Next Ws End Sub

El código anterior eliminará todas las hojas de trabajo excepto la hoja de trabajo llamada "Ventas 2018".

Articulos interesantes...