Podría haber un momento en el 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 comprobar si existe una hoja de trabajo.
Cubriremos las siguientes formas en este artículo:
1. Función definida por el usuario conocida como UDF
2. Subrutina a través del cuadro de mensaje
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 saber si existe una hoja específica, debemos seguir los pasos a continuación para iniciar el editor de VB
- Haga clic en la pestaña Desarrollador
- Desde el grupo de código, seleccione Visual Basic
- Copie el siguiente código en el módulo estándar
Opción Función explícita WorksheetExists (ByVal WorksheetName As String) As Boolean Dim Sht Como hoja de trabajo para cada Sht en este libro de trabajo. = Función de fin falso
- 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 la respuesta como Falso
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 este libro de trabajo. y Siguiente Sht son las partes inicial y final del ciclo, respectivamente.
Luego Si Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Entonces
WorksheetExists = Verdadero
Comprueba si el nombre de la hoja coincide con el nombre de la hoja pasado desde la macro principal. Si es así, WorksheetExists es True y podemos salir de la función. De lo contrario, WorksheetExists = False se devuelve a la macro principal. El bucle va de la 1ª hoja a la siguiente hasta que se hayan comprobado todas las hojas.
Segunda opción: Subrutina a través del cuadro de mensaje
Podemos tener una subrutina normal que llame a una UDF y, si se encuentra la hoja especificada, el cuadro de mensaje mostrará "la hoja existe"; si no se encuentra, aparece msgbox, "hoja no encontrada".
Para comprobarlo, copiaremos el siguiente código en el módulo estándar:
Función WorksheetExists2 (WorksheetName como cadena, wb opcional como libro de trabajo) Como booleano Si wb no es nada, entonces establezca wb = ThisWorkbook con wb en caso de error Reanudar siguiente WorksheetExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) En caso de error Ir a 0 Finalizar con función de fin Sub FindSheet () If WorksheetExists2 ("Sheet1") Then MsgBox "Sheet1 está en este libro de trabajo" Else MsgBox "Vaya: la hoja no existe" End If End Sub
Después de ejecutar la macro "FindSheet", obtendremos el siguiente cuadro de mensaje si la hoja existe:
Si la Hoja no existe, obtendremos el siguiente cuadro de mensaje:
De manera similar, podemos tener un bucle IF simple que verifica si la hoja existe y realiza ciertas acciones a partir de entonces.
Subprueba () Dim ws como hoja de trabajo para cada ws en este libro de trabajo. Hojas de trabajo Si ws.Name "Main" Entonces ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " PÁGINA DE INICIO DE SESIÓN PRINCIPAL "Finalizar si siguiente ws Finalizar 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 de trabajo.
- Luego verifica si el nombre de la hoja de trabajo 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 al sitio de correo electrónico