Macro para deseleccionar celdas protegidas

He diseñado un pequeño programa para facturación, con macros. Cada hoja está protegida por contraseña, deseleccionando las celdas bloqueadas. Para ello al principio de la macro he puesto una instrucción para desproteger la hoja, se ejecute la macro y al final volver a protegerla con contraseña.

Todo funciona bien, pero cuando guardo el libro y lo cierro, al volverlo a abrir sigue protegido el libro, eso es correcto, pero me deja seleccionar la celdas bloqueadas.

¿Podíais indicarme qué puedo hacer?. He borrado la macro y la he vuelto a hacer y siempre me pasa lo mismo.

2 respuestas

Respuesta
1

Después de proteger la hoja

Agrega esta línea

    ActiveSheet.EnableSelection = xlUnlockedCells

Prueba y me comentas. Si es lo que necesitas, no olvides valorar la respuesta.

Hola Dante Amor.

He agregado la línea y no funciona.  La macro funciona perfectamente y la puedo ejecutar todas las veces que quiera, sin ningún problema, las celdas bloqueadas no se seleccionan..  El problema surge cuando guardo y cierro.  Al volver a abrirlo las celdas bloqueadas se pueden seleccionar.

Tienes macros en los eventos de tu libro, ¿tienes alguna macro que se ejecute con el evento Open?

O alguna otra macro. Puedes poner todos tus códigos para revisarlos

  La macro que he grabado lo que hace es registrar los datos de una factura en otra hoja y proteger el formato de la factura con contraseña. Se me ocurre algún código que indique que las celdas bloqueadas no se puedan seleccionar, al abrir el libro.  Pero no sé como hacerlo.  Te pongo los códigos .

Sub REGISTRARFACTURA()

'

' REGISTRARFACTURA

'

    Application.ScreenUpdating = False

    Sheets("FACTURA").Unprotect Password:="XXXXXX"

    Application.Goto Reference:="R13C12:R21C12"

    Selection.Copy

    Sheets("Registro factura").Select

    Application.Goto Reference:="R10000C1"

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=True

    Application.Goto Reference:="R4C1:R10000C9"

    Application.CutCopyMode = False

    ActiveWorkbook.Worksheets("Registro factura").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Registro factura").Sort.SortFields.Add Key:=Range( _

        "A4:A10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

        xlSortNormal

    With ActiveWorkbook.Worksheets("Registro factura").Sort

        .SetRange Range("A4:I10000")

        .Header = xlGuess

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

    Range("A4").Select

    Sheets("FACTURA").Select

    Range("C7").Select

    Sheets("FACTURA").Protect Password:="XXXXXX"

    Application.ScreenUpdating = True  

End Sub

Envíame tu archivo para revisarlo

Mi correo [email protected]

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

Respuesta
1

No me queda claro tu problema. Veamos, si proteges una hoja, no puedes editar ni cambiar datos en dicha hoja pero sí seleccionar las celdas (a menos que hagas que no se pueda, que no es automatico al proteger). Asimismo, si le quitaste la propiedad "Bloqueada" a algunas celdas previamente, así la hoja esté protegida sí se puede editar/cambiar dichas celdas; entonces ¿cuál es exactamente tu problema? ¿Qué códigos usas?

Abraham Valencia

Hola Abraham:

Te copio la macro. Lo que pretendo hacer es registrar los datos de una factura en otra hoja. Lo que quiero es que la factura quede protegida con contraseña.

Sub REGISTRARFACTURA()

'

' REGISTRARFACTURA

'

    Application.ScreenUpdating = False

    Sheets("FACTURA").Unprotect Password:="XXXXXX"

    Application.Goto Reference:="R13C12:R21C12"

    Selection.Copy

    Sheets("Registro factura").Select

    Application.Goto Reference:="R10000C1"

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=True

    Application.Goto Reference:="R4C1:R10000C9"

    Application.CutCopyMode = False

    ActiveWorkbook.Worksheets("Registro factura").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Registro factura").Sort.SortFields.Add Key:=Range( _

        "A4:A10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

        xlSortNormal

    With ActiveWorkbook.Worksheets("Registro factura").Sort

        .SetRange Range("A4:I10000")

        .Header = xlGuess

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

    Range("A4").Select

    Sheets("FACTURA").Select

    Range("C7").Select

    Sheets("FACTURA").Protect Password:="XXXXXX"

    Application.ScreenUpdating = True  

End Sub

Pues en tu macro desproteges y proteges la hoja "Factura" (OJO, solo esa hoja) y en el código no hay nada que haga algún cambio. Quizá tienes más macros en el archivo y ahí podría estar el dilema.

Abraham Valencia

Ok, gracias. Revisaré el resto de las macros.

Ya nos comentarás

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas