Proteger hoja de excel que tiene insertada una macro

Mi problema es el siguiente. Tengo una hoja excel con la siguiente macro para que al clicar en una celda se me amplíe el zoom y al clicar en cualquier otra celda disminuya dicho zoom.
El problema esta en que quiero proteger dicha hoja para que queden solo activas las celdas desbloqueadas. Al proteger la hoja me da un error de depuración de la macro.
¿Hay alguna forma de hacer que funcione la protección?
El código vba que uso es el siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("A23:A128")).Address = Range("A23:A128").Address Then
ActiveWindow.Zoom = 120
Range("A23").ColumnWidth = 70
Else
Range("A23").ColumnWidth = 64
ActiveWindow.Zoom = 30
End If
End Sub

Respuesta
1

Con este código puede desbloquear un área determinada y el resto de campos puede estar bloqueada, puede adaptar el rango a bloquear a sus necesidades sin necesidad de bloquear la hoja, en caso de que no le funcione si puede compartir su archivo para apoyarle

Sheets("hoja5").ScrollArea = "A1:E10

¡Gracias!  Lo probaré

Me funciona, pero solo para un rango.Querría poder elegir varios rangos como por ejemplo

Sheets("Hoja1").ScrollArea = "AD10:AI12"
Sheets("Hoja1").ScrollArea = "A23:AF37"
Sheets("Hoja1").ScrollArea = "A39:AF42"

Este código le puede funcionar, se escribe mas pero hace su función y si cree que le puede servir agregue los demás rangos. Si no se cumple la condición envía el cursor a la celda "AD10" este puede adecuarlo a sus necesidades

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
    If Target.Address = "$AD$10" Then
    ElseIf Target.Address = "$AD$11" Then
    ElseIf Target.Address = "$AD$12" Then
    ElseIf Target.Address = "$AE$10" Then
    ElseIf Target.Address = "$AE$11" Then
    ElseIf Target.Address = "$AE$12" Then
    ElseIf Target.Address = "$AF$10" Then
    ElseIf Target.Address = "$AF$11" Then
    ElseIf Target.Address = "$AF$12" Then
    ElseIf Target.Address = "$AG$10" Then
    ElseIf Target.Address = "$AG$11" Then
    ElseIf Target.Address = "$AG$12" Then
    ElseIf Target.Address = "$AH$10" Then
    ElseIf Target.Address = "$AH$11" Then
    ElseIf Target.Address = "$AH$12" Then
    ElseIf Target.Address = "$AI$10" Then
    ElseIf Target.Address = "$AI$11" Then
    ElseIf Target.Address = "$AI$12" Then
    Else
        Range("AD10").Select
    End If
End Sub

¡Gracias! Este código no funciona. Cuando inserto un modulo me aparece parte del texto en rojo. He probado en proteger AD10, A23 Y B23 y me aparece el texto que hay en negrita en rojo.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)

On Error Resume Next

    If Target.Address = "$A$10" Then


    ElseIf Target.Address = "$AD$10" Then
    ElseIf Target.Address = "$A$23" Then
    ElseIf Target.Address = "$B$23" Then
    Else
        Range("$A$10").Select
    End If
End Sub

Puede compartir su archivo con datos ficticios para hacer la prueba y segregarlo funcional

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas