07 junio 2026

Función VBA estado proteger/desproteger hoja (MS Excel)

Se puede crear una función específica de Excel mediante VBA para evaluar el estado de protección/desprotección de una hoja de cálculo en un libro de Excel y realizar acciones en consecuencia. Desde el libro en cuestión, la combinación de teclas Alt+F11 abre la ventana del editor de Visual Basic. Desde éste, la secuencia de opciones Insertar | Módulo crea un nuevo módulo de código en blanco. Si, por ejemplo, nuestra nueva función personalizada se quiere denominar HJAPRT(), se puede copiar y pegar en el módulo este bloque de código:
Function HJAPRT(Optional Celda As Range) As Boolean
Application.Volatile
If Celda Is Nothing Then
HJAPRT = Application.Caller.Worksheet.ProtectContents
Else
HJAPRT = Celda.Worksheet.ProtectContents
End If
End Function
Cerrando sucesivamente las dos ventanas abiertas se cierra el editor y se vuelve al libro con la nueva función añadida al repertorio estándar. La expresión que puede introducirse ahora en cualquier celda de una hoja para evaluar el estado de protección/desprotección de la hoja sería del tipo:
=SI(HJAPRT();"PROTEGIDA";"DESPROTEGIDA")
En este ejemplo se mostrará en la celda el literal "PROTEGIDA" o "DESPROTEGIDA", según corresponda, aunque podría realizarse cualquier otra acción como consecuencia del resultado de la evaluación de la función estándar SI().