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.

img1

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

img2

  • 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

img3

Para verificar, usaremos UDF en la celda B2 como = WorksheetExists (A2)

img4

  • 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

img5

Después de ejecutar la macro «FindSheet», obtendremos el siguiente cuadro de mensaje si la hoja existe:

img6

Si Sheet no existe, obtendremos el siguiente cuadro de mensaje:

img7

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

img8

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

img9

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.

image 48

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]