Desproteger para Ordenar

20/05/2005 - 19:08 por AnGeLo | Informe spam
Buenas tardes Grupos,

Necesito ejecutar una macro para ordenar unos datos pero ay ciertas columnas
protegidas, asi q no me deja ordenarlas, como puedo hacer para q cuando
ejecuto la macro me desproteja la hoja, despues me ejecute la macro q ordena
y despue me vuelva a proteger la hoja? adjunto el codigo q uso:

Sub ordenar2()
Application.ScreenUpdating = False
Rows("6:6").Select
Range(Selection, Selection.End(xlDown)).Select
Rows("6:146").Select
Range(Selection, Selection.End(xlDown)).Select
Rows("6:65534").Select
Range(Selection, Selection.End(xlUp)).Select
Rows("6:179").Select
Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Key2:=Range("D6")
_
, Order2:=xlAscending, Key3:=Range("E6"), Order3:=xlAscending,
Header:= _
xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B6").Select
Application.ScreenUpdating = True
End Sub


Saludos,

Angelo Vernaza
"La única vez que me eh equivocado, fue cuando pensé que me habia
equivocado"
 

Leer las respuestas

#1 KL
20/05/2005 - 20:00 | Informe spam
Hola Angelo,

Dos formas:

1) Modificando tu macro:

Sub ordenar2()
CLAVE = "abracadabra" 'aqui va tu clave
Application.ScreenUpdating = False
With ActiveSheet
.Unprotect CLAVE
.Rows("6:179").Sort Key1:=.Range("A6"), _
Order1:=xlAscending, Key2:=.Range("D6"), _
Order2:=xlAscending, Key3:=.Range("E6"), _
Order3:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
.Range("B6").Select
.Protect CLAVE
End With
Application.ScreenUpdating = True
End Sub

2) Añadiendo el siguiente codigo en el modulo de ThisWorkbook (EsteLibro) y
usando tu macro original ligeramente depurado. el codigo supone que tu hoja
se llama "Hoja1", si no, cambia el nombre al que tiene en realidad:

'-En el modulo ThisWorkbook-
Private Sub Workbook_Open()
CLAVE = "abracadabra" 'aqui va tu clave
Me.Sheets("Hoja1").Protect password:=CLAVE, _
UserInterfaceOnly:=True
End Sub

'-En el mismo modulo donde estaba antes-
Sub ordenar2()
Application.ScreenUpdating = False
With ActiveSheet
.Rows("6:179").Sort Key1:=.Range("A6"), _
Order1:=xlAscending, Key2:=.Range("D6"), _
Order2:=xlAscending, Key3:=.Range("E6"), _
Order3:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
.Range("B6").Select
End With
Application.ScreenUpdating = True
End Sub

Saludos,
KL

Preguntas similares