Podría haber un momento en que tenga que verificar si existe una hoja de trabajo, que ha creado o eliminado en un libro de trabajo en una macro / código de VBA. Podemos hacer esto fácilmente usando una función / macro. Hay varias formas de verificar si existe una hoja de cálculo.
Vamos a cubrir las siguientes formas en este artículo:
Primera opción: Función definida por el usuario
La siguiente instantánea contiene algunos nombres de hojas y comprobaremos si existen los nombres de la hoja en la columna A.
Para encontrar si existe una hoja específica, debemos seguir los siguientes pasos para iniciar el editor de VB
Haga clic en la pestaña Desarrollador
En el grupo Código, seleccione Visual Basic
Copie el siguiente código en el módulo estándar
Opción Explícita La función WorksheetExists (ByVal WorksheetName como cadena) es booleana. Dim Sht como hoja de cálculo Para Cada Sht En ThisWorkbook.Hoja Si Application.Proper(Sht.Name) = Aplicación.Apropiado(WorksheetName) Entonces WorksheetExists = Verdadero Salir de la función Final Si Siguiente Sht WorksheetExists = Falso Función final
Para verificar, usaremos UDF en la celda B2 como
=WorksheetExists(A2)
En la imagen de arriba, "MasterSheet" no existe en nuestro libro de trabajo de muestra; por lo tanto, la fórmula ha dado respuesta como False
Explicación del código:
Esta función toma el valor de “WorksheetName” de la macro que realiza otras actividades. Si necesita cambiarlo según su código, puede hacerlo.
Para Cada Sht En ThisWorkbook.Hojas de trabajo y Siguiente Sht son las partes inicial y final del bucle, respectivamente.
Entonces, si Application.Proper(Sht.Name) = Application.Apropiado(WorksheetName) Entonces
WorksheetExists = Verdadero
Comprueba si el nombre de la hoja coincide con el nombre de la hoja pasado desde la macro principal. Si lo hace, Hoja de cálculo existente es True, y podemos salir de la función. De lo contrario, Hoja de cálculo existente = False se devuelve a la macro principal. El bucle va de la primera hoja a la siguiente hasta que se hayan verificado todas las hojas.
Segunda opción: Sub rutina a través del cuadro de mensaje
Podemos tener una subrutina normal que está llamando a un UDF y, si se encuentra la hoja especificada, el cuadro de mensaje mostrará, 'sheet exist'; si no se encuentra, aparece msgbox, 'sheet not found'.
Para comprobarlo, copiaremos el siguiente código en el módulo estándar:
Función Hoja de cálculo existente2 (Hoja de cálculo existente como cadena, wb opcional como libro de trabajo) como booleano
Si wb no es nada, entonces establezca wb = ThisWorkbook Con wb En error Reanudar Siguiente Para obtener más información, consulte el siguiente enlace:) En Error GoTo 0 Terminar con Función final Sub FindSheet() Si Hoja de cálculo existente2("Sheet1") Entonces MsgBox "Sheet1 está en este libro" Otro MsgBox "Uy: la hoja no existe" Final Si Final Sub
Después de ejecutar la macro “BuscarHoja”, obtendremos el siguiente cuadro de mensaje si la hoja existe:
Si la hoja no existe, obtendremos el siguiente cuadro de mensaje:
Del mismo modo, podemos tener un bucle IF simple que verifica si la hoja existe y realiza ciertas acciones a partir de entonces.
Sub prueba() Dim ws como hoja de cálculo Para Cada ws En ThisWorkbook.Hoja Si ws.Name <> "Principal" Entonces ws.Rango("A1").Valor = ws.Nombre Otro ws.Rango("A1").Value = "PÁGINA DE INICIO DE SESIÓN PRINCIPAL" Final Si Siguiente ws Final Sub
Para probar la macro anterior, necesitamos crear un nombre de hoja "Principal". Esta macro es muy simple
Recorre cada hoja de trabajo en el libro
Luego verifica si el nombre de la hoja de cálculo no es PRINCIPAL
Si es PRINCIPAL, muestra texto, como "PÁGINA DE INICIO DE SESIÓN PRINCIPAL" en A1 de esa hoja, de lo contrario, muestra el nombre de la hoja en la celda A1
Esta es solo otra forma de verificar si la hoja existe. Si existe, realice la acción A, si no, la acción B
Conclusión: Podemos identificar si existe una hoja en nuestro libro de trabajo o no; podemos usar UDF o subrutina según nuestra conveniencia.
Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.
Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos a info@exceltip.com
The applications/code on this site are distributed as is and without warranties or liability. In no event shall the owner of the copyrights, or the authors of the applications/code be liable for any loss of profit, any problems or any damage resulting from the use or evaluation of the applications/code.