Ocultar filas y bloqueo de celdas

Gusto de saludarte quiero pedir tu apoyo viendo que eres un master en esto de la programación

Quiero el apoyo de ustedes como expertos tengo un archivo en Excel, en la imagen hay una pregunta que dice ¿realiza operaciones de exportación?, si se activa el check entonces que muestra las filas de la 26 a la 36 y de la 53 a la 68, y al momento de desactivar el chek que las oculte, pero también deseo que ciertas celdas queden bloqueadas para que no se puedan modificar algunas formulas

1 respuesta

Respuesta
1

El problema que tienes es porque las celdas que intentas bloquear, están combinadas.

Tienes esto:

        Range("s16:s24").Select ' selecciona el rango de celdas que desees dejar bloqueadas
        Selection.Locked = True ' bloquea las celdas seleccionadas

Y debería ser así:

Range("Q17:S24").Locked = True

También tienes esto:

        Range("L24").Select ' selecciona el rango de celdas que desees dejar bloqueadas
        Selection.Locked = True ' bloquea las celdas seleccionadas

Y debería ser así:

        Range("L24:P24").Locked = True

Te anexo un ejemplo de cómo debería quedar tu macro:

Private Sub CheckBox1_Click()
    ActiveSheet.Unprotect "regional2018"
    If CheckBox1.Value = True Then
        Rows("26:36").EntireRow.Hidden = False
        Rows("53:68").EntireRow.Hidden = False
        Range("Q17:S24").Locked = True
        Range("L24:P24").Locked = True
    Else
        Rows("26:36").EntireRow.Hidden = True
        Rows("53:68").EntireRow.Hidden = True
        Range("Q17:S24").Locked = False
        Range("L24:P24").Locked = False
    End If
    ActiveSheet.Protect "regional2018", DrawingObjects:=True, Contents:=True, Scenarios:=True ' las protege
End Sub

Prueba con esos rangos y después agrega los que necesites.


[No olvides valorar la respuesta.

¡Gracias!, por el apoyo y tu pronta respuesta funciona excelente, quería consultarte para que sirve lo de los rangos de Q17:S24; L24:P24

además quería pedirte si puedo hacer que cuando aplique el check o lo desactive, se posicione en la celda L17 

Los rangos que mencionas abarcan las celdas combinadas.

Al final de la macro escribe Range("L17").select

¡Gracias!

Quiero agregarle a la macro que cuando desactive el checkbox limpie los datos que ingrese en esas celdas, es decir que cuando lo activo se muestras las filas y puedo colocar valores, perp a desactivarlo se ocultan las filas y entonces quiero que esos valores que ingrese se borren también es estp posible

Prueba lo siguiente, cambia esto:

    Else
        Rows("26:36").EntireRow.Hidden = True
        Rows("53:68").EntireRow.Hidden = True
        Range("Q17:S24").Locked = False
        Range("L24:P24").Locked = False

Por esto:

    Else
        rows("26:36").clearcontents
        Rows("53:68").clearcontents
        Rows("26:36").EntireRow.Hidden = True
        Rows("53:68").EntireRow.Hidden = True
        Range("Q17:S24").Locked = False
        Range("L24:P24").Locked = False

¡Gracias! 

te pido disculpas talvez no aclare bien lo que deseo que borre, cuando desactive el checkbox se ocultan las filas y eso lo hace perfecto la macro que me diste anteriormente, ahora quiero que me borre los datos cuando desactivo el checkbox que ingreso pero en las celdas P27:P34 y también k55:K62, espero puedas ayudarme y de antemano muy agradecido eres un master en esto

saludos

Utiliza la instrucción clearcontents para borrar, solamente ponla en donde quieras borrar, ya te puse un ejemplo, intenta realizarlo con las filas que quieras borrar

Hola intente hacerlo así pero me da error, que estaré haciendo mal para que no funcione

Private Sub CheckBox1_Click()
    ActiveSheet.Unprotect "regional2018"
    If CheckBox1.Value = True Then
        Rows("26:36").EntireRow.Hidden = False
        Rows("53:68").EntireRow.Hidden = False
        Range("Q17:S24").Locked = True
        Range("L24:P24").Locked = True
        Range("L17").Select
    Else
        Range("P26:P36").ClearContents
        Range("K53:K68").ClearContents
        Rows("26:36").EntireRow.Hidden = True
        Rows("53:68").EntireRow.Hidden = True
        Range("Q17:S24").Locked = False
        Range("L24:P24").Locked = False
        Range("L17").Select
    End If
    ActiveSheet.Protect "regional2018", DrawingObjects:=True, Contents:=True, Scenarios:=True ' las protege
End Sub
Sub proteger()
Worksheets(1).Select
ActiveSheet.Protect ("regional2018")
End Sub
Sub desproteger()
Worksheets(1).Select
ActiveSheet.Unprotect ("regional2018")
End Sub

¡Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas