Cómo bloquear y proteger celdas sin que desactive las macros

Estoy trabajando en un libro en el que quiero que sólo se puedan modificar unas celdas en concreto, pero cuando bloqueo las celdas y protejo la hoja ya no me funcionan los botones que tengo en una macro que tienen unas funciones específicas dentro de la hoja. ¿Cómo puedo hacer esto?

Respuesta
2

Realiza lo siguiente:

  • Desprotege la hoja.
  • Selecciona tu botón con el botón derecho del mouse
  • Entra a las propiedades
  • En la pestaña propiedades, desmarca la casilla "Bloqueado"

Otra opción:

Cuando protejas la hoja marca las casillas Modificar objetos y Modificar escenarios.


Si continúa el problema, envíame tu archivo y me explicas cómo funciona antes de proteger y después de proteger qué ya no funciona.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “xander320


Si te funciona, recuerda valorar la respuesta.

Muchas gracias por la respuesta. No lo he conseguido y he enviado el archivo. Espero me pueda ayudar como siempre lo ha hecho. Un saludo.

Te anexo las macros actualizadas

Dim l1, h1
Sub Iniciar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Mental")
    h1.Unprotect "abc"
    h1.[Q2] = "Fin"
    h1.[F25] = h1.[F8]
    h1.[F38] = h1.[F8]
    h1.[M2] = Time
    h1.Protect "abc"
End Sub
Sub Comenzar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Mental")
    h1.Unprotect "abc"
    If h1.[Q2] = "" Then
        MsgBox "No se puede ejecutar otra vez", vbCritical, "El reloj está en ejecución"
        Exit Sub
    End If
    h1.[Q2] = ""
    h1.Protect "abc"
    ActualizarHora
End Sub
Sub ActualizarHora()
'Por.Dante Amor
    On Error Resume Next
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Mental")
    If [F8] = "0" Then
        MsgBox "SE ACABÓ EL TIEMPO" & vbNewLine & "Arriba las manos"
        h1.[Q2] = "Fin"
    Else
        If h1.[Q2] = "Fin" Then Exit Sub
        h1.[M2] = Time
        h1.[F8] = h1.[F8] - TimeValue("00:00:01")
        h1.[F25] = h1.[F25] - TimeValue("00:00:01")
        h1.[F38] = h1.[F38] - TimeValue("00:00:01")
        Application.OnTime Now + TimeValue("00:00:01"), "ActualizarHora"
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas