¿Cómo eliminar hojas en Excel con VBA?

Cuando se trata de eliminar una hoja, o un par de hojas de trabajo, es mejor usar los métodos mencionados anteriormente.

Cómo funciona en VBA

VBA puede automatizar el proceso, es útil cuando tiene que repetir la tarea varias veces.

A continuación se muestra el código VBA que eliminará la hoja activa:

VBA
Sub Borrar()

ActiveSheet.Delete

End Sub

Cuando use el código anterior para eliminar la hoja activa, Excel le mostrará un mensaje en el que tendrá que hacer clic en el botón Eliminar para confirmar la acción.

Eliminar la hoja sin mostrar el mensaje de confirmación

El cuadro de mensaje de aviso de confirmación es una función útil que asegura que tenga la oportunidad de cancelar la eliminación de la hoja en caso de que haya ejecutado el código accidentalmente / erróneamente

Pero si ya sabe lo que está haciendo, recibir este mensaje puede resultar bastante irritante.

así que aquí está el código VBA que se aseguraría de que las hojas se eliminen, pero no verá ningún cuadro de mensaje de confirmación.

VBA
Sub Borrar()

Application.DisplayAlerts = False
  ActiveSheet.Delete
Application.DisplayAlerts = True

End Sub

En el código anterior, establecí la propiedad Application.DisplayAlerts en falso, lo que significa que Excel no le mostrará ninguna alerta de pantalla mientras se ejecuta el código.

También es muy importante asegurarse de volver a convertirlo en verdadero al final del código para restaurar la funcionalidad (como puede ver, lo he hecho en el código anterior).

Precaución: Cuando establezca la propiedad Application.DisplayAlerts en falso, Excel simplemente eliminará la hoja de trabajo y no habrá forma de recuperarla. así que le aconsejo que haga una copia de seguridad antes de utilizar este tipo de código.

Eliminar hoja por nombre (si existe) usando VBA

VBA le permite automatizar el proceso de eliminación de una hoja de trabajo específica (en varias hojas de trabajo) según el nombre de la hoja.

Por ejemplo, si tiene una hoja de trabajo con el nombre ‘Productos’, puede usar el siguiente código para eliminarla:

VBA
Sub Borrarpornombre()

Sheets("Productos").Delete

End Sub

Este código solo eliminaría la hoja que tiene el nombre Productos.

Es útil cuando tiene un libro de trabajo con muchas hojas y no desea examinar todas las hojas de trabajo, busque la que tiene el nombre ventas y elimínela manualmente.

Con el código anterior, no importa cuántas hojas de trabajo haya en el libro de trabajo, simplemente eliminaría la hoja de trabajo de Productos.

Y dado que no he cambiado la propiedad Application.DisplayAlert, verá un mensaje en el que tendrá que hacer clic en el botón Eliminar para confirmar la duración de la hoja de ventas.

En caso de que desee eliminar varias hojas según su nombre, también puede hacerlo.

Por ejemplo, el siguiente código eliminaría las hojas con el nombre Ventas, Marketing, Finanzas:

VBA
Sub Borrarpornombre()

  Sheets("Productos").Delete
  Sheets("Proveedores").Delete
  Sheets("Clientes").Delete
  
End Sub

Eliminar todas las hojas excepto la hoja activa usando VBA

Si tiene un libro de trabajo con varias hojas de trabajo y desea eliminar todas las hojas de trabajo excepto la hoja activa, VBA es probablemente uno de los mejores métodos para hacer esto.

A continuación se muestra el código de VBA que eliminaría todas las hojas excepto la hoja activa en el libro de

VBA
Sub Borrartodo()

  Dim ws As Worksheet
  
  Application.DisplayAlerts = False
  
    For Each ws In Sheets
    
      If ws.Name <> ActiveSheet.Name Then
      
        ws.Delete
        
      End If
      
    Next ws
    
  Application.DisplayAlerts = True
  
End Sub

Tenga en cuenta que he dicho que la propiedad Application.DisplayAlerts se encuentra al principio del código, ya que no quiero ver un mensaje para cada hoja que se elimina.

Eliminar todas las hojas con una cadena de texto específica en el nombre

Este es un caso de uso un poco más avanzado de usar VBA de manera efectiva al eliminar hojas de trabajo.

Suponga que tiene un libro de trabajo con muchas hojas de trabajo diferentes y desea eliminar todas las hojas de trabajo que tienen una cadena de texto específica, entonces puede hacerlo fácilmente usando VBA.

Por ejemplo, a continuación tengo un libro de trabajo en el que quiero eliminar todas las hojas de trabajo que tienen la cadena de texto «Productos» en ellas.

A continuación se muestra el código VBA que haría eso:

VBA
Sub Borrartodo()
Dim ws As Worksheet

Application.DisplayAlerts = False

  For Each ws In Sheets
  
    If ws.Name Like "*" & "Productos" & "*" Then
    
      MsgBox ws.Name
      ws.Delete
      
    End If
    
  Next ws
  
Application.DisplayAlerts = True

End Sub

El código anterior usa la instrucción if-then para revisar todas las hojas de trabajo en el libro de trabajo. Comprueba el nombre de todas estas hojas de trabajo y si el nombre contiene la palabra «Productos», esa hoja de trabajo se elimina.

Si desea cambiar el código y buscar cualquier otra cadena de texto, puede cambiar eso en la quinta línea del código anterior.

También tenga en cuenta que he usado un asterisco (*), que es un carácter comodín , en ambos lados de la cadena de texto que estamos buscando en el nombre de la hoja de trabajo. Esto asegura que no importa dónde aparezca la cadena en el nombre de la hoja de trabajo, aún se eliminará.

Estos son algunos de los métodos que puede utilizar cuando desee eliminar hojas en Excel. En la mayoría de los casos, puede hacer esto fácilmente dentro de la hoja de trabajo usando el mouse o el atajo de teclado.

Pero en caso de que tenga un libro de trabajo pesado con muchas hojas de trabajo y desee eliminar rápidamente tipos específicos de hojas, también puede usar VBA.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto