DETERMINAR SI EXISTE UNA HOJA EN UN LIBRO MEDIANTE VBA

0
613
Slider

Visual Basic es un lenguaje de programación orientado a eventos desarrollado por Microsoft. Visual Basic es simple y rápido de aprender y es muy popular por su desarrollo rápido en aplicaciones y capacidades de automatización. El lenguaje VB se incluye en una serie de productos de Microsoft, incluyendo Visual Basic 6, .NET y Microsoft Office. Los programadores pueden escribir programas utilizando VB y el editor de VB para programar Microsoft Excel y comprobar si existen ciertas hojas de cálculo en sus documentos de Excel.

Y es que cuando estamos programando en VBA y necesitamos leer o insertar datos en alguna hoja de un libro será una buena práctica el comprobar si existe la hoja de Excel antes de realizar cualquier acción ya que, en caso de no existir se generará un error en tiempo de ejecución. La siguiente imagen muestra un mensaje típico para este tipo de error:

Comprobar si existe una hoja de Excel desde VBA

COMPROBAR SI EXISTE UNA HOJA DE EXCEL

Sabemos que la colección Worksheets contiene todas las hojas de un libro y una opción para comprobar la existencia de cualquiera de ellas sería recorrer dicha colección hasta encontrarla. Considera el código de la siguiente función:

La función BuscarHoja1 devolverá el valor falso o verdadero en base al resultado de la búsqueda de la hoja cuyo nombre sea especificado como argumento. Para probar esta función he agregado un botón de comando en la Hoja1 y he escrito el siguiente código en su evento Click:

Al pulsar el botón se realizará la búsqueda de la hoja tomando en cuenta el nombre indicado en la celda B1. Si para nuestro ejemplo colocamos el nombre “Hoja4” obtendré el siguiente resultado:

Comprobar si existe hoja de calcula con VBA

Como puedes observar, el libro tiene la Hoja1, Hoja2 y Hoja3 así que al buscar la Hoja4 obtendré un mensaje indicando que dicha hoja no existe. Aunque este método funciona adecuadamente, considero que tiene una desventaja ya que entre más hojas contenga el libro, mayor será el tiempo que se demore en realizar la búsqueda.

OTRO MÉTODO PARA VALIDAR SI EXISTE UNA HOJA

El método que prefiero para comprobar la existencia de una hoja de Excel es controlando el error que pueda surgir en caso de que la hoja no exista. En este caso hacemos uso de la instrucción On Error Resume Next cuyo objetivo es ignorar el error y continuar con la ejecución del código en la siguiente línea.

previous arrow
next arrow
Slider

La segunda línea de código de esta función compara el nombre de la hoja solicitada con una cadena vacía. Si la hoja existe, dicha comparación será verdadera y por lo tanto la hoja existirá, pero si la comparación es falsa querrá decir que la hoja no existe.

Para probar esta función crearé un segundo botón de comando que tendrá el mismo código que el primer botón con la diferencia de que se utilizará la función BuscarHoja2. Al hacer la búsqueda de la Hoja8 con este segundo método obtendremos el siguiente resultado:

Cómo determinar si existe una hoja en un libro de trabajo con VBA

Cualquiera de los dos métodos anteriores funcionará correctamente para conocer si una hoja existe dentro de un libro aunque personalmente prefiero el segundo método por la sencillez del código y la ausencia del bucle For.

CREAR LA HOJA SI NO EXISTE

Las funciones que hemos creado nos ayudarán a conocer la existencia de una hoja, pero en más de una ocasión necesitaremos crear dicha hoja aun cuando no exista. La creación de una hoja desde VBA es muy sencilla utilizando el método Worksheets.Add de la siguiente manera:

He decidido dejar este procedimiento como una función para poder devolver un valor verdadero en caso de que la hoja ya exista o un valor falso en caso de que haya sido creada por la función.  Ese resultado se almacena en la variable existe que es evaluada para saber si debemos utilizar el método Worksheets.Add para indicar la creación de la nueva hoja la cual tendrá por nombre el valor indicado en el argumento nombreHoja.

El argumento After utilizado en el método Worksheets.Add nos sirve para indicar que la nueva hoja sea creada al final de las hojas existentes. Para probar esta función agregaré un tercer botón a la hoja y el código de su evento Clck será idéntico a los anteriores. Si especificamos el nombre Hoja4 en la celda B1, al pulsar dicho botón obtendremos el siguiente resultado:

Verificar si una hoja ya existe con VBA

Ya que la Hoja4 no existía, nuestra función hace la creación de la hoja y la coloca al final de las hojas existentes. Si vuelves a hacer clic en el botón para intentar crear de nueva cuenta la Hoja4, se mostrará la advertencia de que la hoja ya existe. De esta manera hemos forzado la creación de una hoja en caso de que no exista.

De esta manera podemos identificar si existe una hoja en nuestro libro de trabajo o no; podemos usar UDF o subrutina según nuestra conveniencia.

Artículo que te recomendamos leer:
CONCATENAR SALTO DE LÍNEA EN EXCEL

¿Qué te pareció nuestra blog? Coméntanos.



CURSO DE ESPECIALIZACIÓN: MACROS Y PROGRAMACIÓN EN POWER PIVOT

📆 Fechas: Martes y jueves: 17/08, 19/08,24/08,26/08 de agosto y 02/07,07/09,09/09 de setiembre
⏰ Horario: 7:00 pm – 10:00 pm
Duración: 8 sesiones,1 mes.

Mayor información: https://wa.link/y3ylw0

Comentarios
Slider

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí