Visual Basic para Aplicaciones - PROTEGER HOJA QUE TIENE INSERTADA UNA MACRO

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 29 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

PROTEGER HOJA QUE TIENE INSERTADA UNA MACRO

Publicado por Francisco (1 intervención) el 21/12/2019 15:18:05
Gracias de antemano.

Mi problema es el siguiente. Tengo una hoja excel con la siguiente macro para que al clicar en una celda se me amplie 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 codigo vba que uso es el siguiente:


1
2
3
4
5
6
7
8
9
10
11
12
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

PROTEGER HOJA QUE TIENE INSERTADA UNA MACRO

Publicado por Antoni Masana (498 intervenciones) el 23/12/2019 14:43:44
Debes desproteger la hoja, realizar la acción y volver a protegerla.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Union(Target, Range("A23:A128")).Address = Range("A23:A128").Address Then
        ActiveSheet.Protect
        ActiveWindow.Zoom = 120
        Range("A23").ColumnWidth = 70
        ActiveSheet.Unprotect
    Else
        ActiveSheet.Protect
        Range("A23").ColumnWidth = 64
        ActiveWindow.Zoom = 30
        ActiveSheet.Unprotect
    End If
End Sub

Y si usas una palabra clave como por ejemplo Patata

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Union(Target, Range("A23:A128")).Address = Range("A23:A128").Address Then
        ActiveSheet.Protect  "Patata"
        ActiveWindow.Zoom = 120
        Range("A23").ColumnWidth = 70
        ActiveSheet.Unprotect  "Patata"
    Else
        ActiveSheet.Protect  "Patata"
        Range("A23").ColumnWidth = 64
        ActiveWindow.Zoom = 30
        ActiveSheet.Unprotect "Patata"
    End If
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar