Determinar si existe una hoja de un libro con VBA en Microsoft Excel
Podría haber un momento en el que tenga que verificar si existe una hoja de trabajo que haya 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:
{vacío} 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 Código, seleccione Visual Basic
-
Copie el siguiente código en el módulo estándar
Option Explicit Function WorksheetExists(ByVal WorksheetName As String) As Boolean Dim Sht As Worksheet For Each Sht In ThisWorkbook.Worksheets If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = False End Function
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.
For Each Sht In ThisWorkbook.Worksheets y Next Sht son las partes inicial y final del ciclo, respectivamente.
Entonces Si Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then _ WorksheetExists = True_ 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.
SecondOption: 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:
Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean If wb Is Nothing Then Set wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName) On Error GoTo 0 End With End Function Sub FindSheet() If WorksheetExists2("Sheet1") Then MsgBox "Sheet1 is in this workbook" Else MsgBox "Oops: Sheet does not exist" End If End Sub
Después de ejecutar la macro «FindSheet», obtendremos el siguiente cuadro de mensaje si la hoja existe:
Si Sheet no existe, obtendremos el siguiente cuadro de mensaje:
De manera similar, podemos tener un ciclo IF simple que verifica si la hoja existe y realiza ciertas acciones a partir de entonces.
Sub test() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Main" Then ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = "MAIN LOGIN PAGE" End If Next ws End 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 a [email protected]