Cómo crear hojas de Excel con VBA

Crear hojas de Excel con VBA es muy sencillo, solo debemos utilizar la instrucción Worksheets.Add y se creará una nueva hoja en nuestro libro. A continuación revisaremos diferentes alternativas para utilizar ésta instrucción.

Agregar una hoja al pulsar un botón

Supondré que deseamos crear una nueva hoja al pulsar un botón, así que el primer paso será agregar un botón ActiveX a mi hoja de Excel. Una vez que he agregado este nuevo botón será suficiente con hacer doble clic sobre él para acceder al evento Click del botón donde colocaré la instrucción necesaria para crear una nueva hoja:

Cómo crear hojas de Excel con VBA

Una vez guardado este código será suficiente con pulsar el botón para crear una hoja de Excel. Observarás que se inserta una nueva hoja a la izquierda de la hoja actual:

Agregar una hoja a un libro de Excel con VBA

Indicar un nombre para la nueva hoja

De manera predetermina Excel nombrará las nueva hojas como Hoja4, Hoja5, Hoja6, etc. Si queremos indicar el nombre de la nueva hoja de Excel podemos modificar un poco la instrucción que utilizamos de la siguiente manera:

Worksheets.Add.Name = "Enero"

En este caso se creará una nueva hoja llamada “Enero”. Al actualizar el código del ejemplo anterior y volver a pulsar el botón “Crear hoja” veremos la creación de la nueva hoja con el nombre elegido:

Indicar el nombre de la nueva hoja de Excel en VBA

Elegir la ubicación de la nueva hoja

Como has notado, la hoja recién insertada se coloca a la izquierda de la hoja activa pero es posible indicar la posición donde deseamos que se inserte la nueva hoja. Por ejemplo, para insertar una hoja llamada “Febrero” después de la “Hoja2” podemos utilizar la siguiente instrucción:

Worksheets.Add (After:=Worksheets("Hoja2")).Name = "Febrero"

El parámetro After hará que Excel inserte la nueva hoja justo después de la hoja especificada. De esta manera logramos insertar una nueva hoja en alguna ubicación específica:

Posición de la nueva hoja de Excel en VBA

También podemos modificar un poco esta instrucción para hacer que la nueva hoja sea insertada siempre en la última posición:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "Marzo"

Crear múltiples hojas con VBA

Existen dos métodos para crear múltiples hojas con VBA. El primer método que mostraré es recomendable cuando no estás interesado en el nombre de las hojas y solamente deseas especificar el número de hojas a crear. Esto lo podemos hacer utilizando el parámetro Count de la siguiente manera:

Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=3

Esta instrucción agregará 3 nuevas hojas a nuestro libro y las insertará después de la última hoja. El segundo método que mostraré es un poco más complejo porque tomará el valor de un rango de celdas y creará las hojas con el nombre especificado en cada una de ellas. Considera el siguiente código:

Crear múltiples hojas de Excel con VBA

Este código recorrerá las primeras 10 celdas de la columna A y si alguna de ellas tiene un valor diferente a vacío entonces se creará una nueva hoja con dicho valor de la celda. Si quieres aumentar el rango de celdas a considerar solo debes aumentar el valor de la variable Max.

Nueva hojas de Excel creadas desde VBA

Es muy importante que recuerdes que Excel no permite tener dos hojas con el mismo nombre, y cualquier intento por crear una hoja con un nombre ya existente generará un error. En este código la instrucción On Error Resume Next tiene el objetivo de evitar el colapso del programa en caso de que se intente crear una nueva hoja con un nombre repetido. A pesar del error la nueva hoja se creará pero utilizando un nombre genérico como: Hoja4, Hoja5, Hoja6, etc.

Una mejora evidente para este código será crear una rutina de validación de hojas que nos permita decidir si crear o no la nueva hoja, pero eso lo dejaremos para una futura publicación. Si lo deseas, puedes descargar el libro de trabajo que contiene este último ejemplo.

Artículos relacionados
Introducción a las macros en Excel