Ayuda con filtros, Hoja protegida, office 2000 y 2003

06/02/2008 - 17:40 por nelson | Informe spam
Hola a todos, les agradeceria mucho su colaboracion con el siguiente
codigo, uso esta macro
para ir a una hoja con 158 filas las cuales en la colunma C4 contiene
los titulos, el de C4 es impuesto, en esta columna hay 12 subtitulos,
RENTA, IVA, etc

en este caso al ejecutarla macro Auto Filtra y muestra la parte de
RENTA en office 2003, funciona, la idea es que la hoja se proteja
pero se puedan seguir usando los Auto Filtros,

Cuando lo uso en office 2000 sale error 1004 "error definido por la
aplicaion o el objeto".
Al dar finalizar muestra la hoja y la seleccion deseada pero no
protege la hoja, y si se protegiera los auto filtros no sirven

Agradezco de antemano su colaboracion o una idea para solucionar este
inconveniente

Saludos

Nelsonb





Sub IRRenta()

Sheets("vs").Visible = -1
Sheets("vs").Select
Sheets("vs").Unprotect PassHVal
Range("C4:X5").Select
Selection.EntireColumn.Hidden = False
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="RENTA"

Sheets("vs").Protect PassHVal, DrawingObjects:=True,
Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Range("E4").Select

End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
06/02/2008 - 23:46 | Informe spam
hola, nelson !

... esta macro... Auto Filtra y... en office 2003 funciona
la idea es que la hoja se proteja pero se puedan seguir usando los Auto Filtros,
... en office 2000 sale error 1004 "error definido por la aplicaion o el objeto".
Al dar finalizar muestra la hoja y la seleccion deseada pero no protege la hoja
y si se protegiera los auto filtros no sirven..

Sub IRRenta()
Sheets("vs").Visible = -1
Sheets("vs").Select
Sheets("vs").Unprotect PassHVal
Range("C4:X5").Select
Selection.EntireColumn.Hidden = False
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="RENTA"
Sheets("vs").Protect PassHVal, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Range("E4").Select
End Sub



prueba a (re)proteger la hoja en el evento '_open' de tu libro (una sola vez en la sesion) estableciendo dos caracteristicas:
-> la proteccion a solo la interfase con el usuario
-> el permiso para usar los autofiltros (y esquemas) los cuales YA deberan estar presentes en tu hoja

segun las versiones a las que tengas pensado dar "soporte" para el uso de tu archivo
(recuerda que el uso de caracteristicas nuevas no tienen soporte en las versiones anteriores)...

a) en excel 97 y 2000 NO necesitas repetir el password (es suficiente con poner):
Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect UserInterfaceOnly:=True
.EnableAutoFilter = True
End With
End Sub

b) a partir de excel 2002/xp SI es requisito repetir el password:
Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect _
PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
.EnableAutoFilter = True
End With
End Sub

(practicamente) TODO lo que hagas por codigo... pasara sin problemas
(excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)

OJO: si llegaras a necesitar que el usuario defina sobre que listado aplica los autofiltros...
copia/pega las siguientes lineas en un modulo de codigo 'general' y asignas la macro a algun boton/atajo/...
Option Private Module
Sub AutoFiltrosPorMacro()
With ActiveCell.CurrentRegion
If .Count > 1 Then
If .Parent.AutoFilterMode Then
If .Parent.AutoFilter.Range.Address <> .Address Then .AutoFilter
End If
.AutoFilter
Else
MsgBox """Activa"" por favor (alg)una celda" & vbCr & _
"""dentro"" (o... ""cerca"") de la lista ""a filtrar"".", _
vbInformation, "AutoFiltros por macros"
End If
End With
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 nelson
07/02/2008 - 15:47 | Informe spam
Hola Hector,

Muchas gracias, es preciso lo que buscaba, implemente la opcion b)
te agradezco

cuando mecionas
(practicamente) TODO lo que hagas por codigo... pasara sin problemas (en hojas protegidas??)
(excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)



podrias indicarme donde encontrar mas informacion al respecto

Nuevamente gracias

Nelsonb







On 6 feb, 17:46, "Héctor Miguel"
wrote:
hola, nelson !





> ... esta macro... Auto Filtra y... en office 2003 funciona
> la idea es que la hoja se proteja pero se puedan seguir usando los Auto Filtros,
> ... en office 2000 sale error 1004 "error definido por la aplicaion o el objeto".
> Al dar finalizar muestra la hoja y la seleccion deseada pero no protege la hoja
> y si se protegiera los auto filtros no sirven..

> Sub IRRenta()
>    Sheets("vs").Visible = -1
>    Sheets("vs").Select
>    Sheets("vs").Unprotect PassHVal
>    Range("C4:X5").Select
>    Selection.EntireColumn.Hidden = False
>    Selection.AutoFilter
>    Selection.AutoFilter Field:=1, Criteria1:="RENTA"
>     Sheets("vs").Protect PassHVal, DrawingObjects:=True, Contents:=True, Scenarios:=True _
>        , AllowFiltering:=True
>     Range("E4").Select
> End Sub

prueba a (re)proteger la hoja en el evento '_open' de tu libro (una sola vez en la sesion) estableciendo dos caracteristicas:
-> la proteccion a solo la interfase con el usuario
-> el permiso para usar los autofiltros (y esquemas) los cuales YA deberan estar presentes en tu hoja

segun las versiones a las que tengas pensado dar "soporte" para el uso de tu archivo
(recuerda que el uso de caracteristicas nuevas no tienen soporte en las versiones anteriores)...

a) en excel 97 y 2000 NO necesitas repetir el password (es suficiente con poner):
Private Sub Workbook_Open()
  With Worksheets("Hoja1")
    .Protect UserInterfaceOnly:=True
    .EnableAutoFilter = True
  End With
End Sub

b) a partir de excel 2002/xp SI es requisito repetir el password:
Private Sub Workbook_Open()
  With Worksheets("Hoja1")
    .Protect _
      PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
      UserInterfaceOnly:=True
    .EnableAutoFilter = True
  End With
End Sub

(practicamente) TODO lo que hagas por codigo... pasara sin problemas
(excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)

OJO: si llegaras a necesitar que el usuario defina sobre que listado aplica los autofiltros...
         copia/pega las siguientes lineas en un modulo de codigo 'general' y asignas la macro a algun boton/atajo/...
Option Private Module
Sub AutoFiltrosPorMacro()
  With ActiveCell.CurrentRegion
    If .Count > 1 Then
      If .Parent.AutoFilterMode Then
        If .Parent.AutoFilter.Range.Address <> .Address Then .AutoFilter
      End If
      .AutoFilter
    Else
      MsgBox """Activa"" por favor (alg)una celda" & vbCr & _
                    """dentro"" (o... ""cerca"") de la lista ""a filtrar"".", _
                    vbInformation, "AutoFiltros por macros"
    End If
  End With
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#3 Héctor Miguel
07/02/2008 - 22:08 | Informe spam
hola, nelson !

cuando mecionas
(practicamente) TODO lo que hagas por codigo... pasara sin problemas (en hojas protegidas??)
(excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)



podrias indicarme donde encontrar mas informacion al respecto



(que yo sepa) no existe algun sitio con el tipo de informacion a que te refieres :-((
el comentario sale a raiz de experiencias comentadas en el foro (y una que otra participacion)
o sea, son producto de "a prueba y error" :D

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida