Hacer que funcione una macro con una hoja oculta

22/10/2006 - 04:55 por Edixon | Informe spam
Hola amigos tengo un problemita, espero puedan ayudarme.

Tengo una macro que me hace un autofiltro de un nombre x en la hoja 1
y me trae todos los datos a la hoja 2 lo que necesito es ocultar la
hoja 1(Menu formato-Hoja-ocultar) o de otra forma,pero que la macro me
siga haciendo el procedimiento igual


Nota: Cuando bloqueo la hoja y ejecuto la macro en la hoja 2 me da un
error

Gracias de antemano por su ayuda

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
22/10/2006 - 07:25 | Informe spam
hola, Edixon !

Mostrar la cita
[aunque no comentas cual seria la 'utilidad' de los autofiltros en una hoja oculta] -???-

prueba/revisa/adapta/... el siguiente ejemplo:
al abrirse el libro, se protege, se ['super']oculta y se habilita el uso de macros y autofiltros en la hoja1
[nota: los aotufiltros YA estan aplicados/definidos/habilitados/... en la misma]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en el modulo de codigo del libro [ThisWorkbook] ==Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect PassWord:="abc", UserInterfaceOnly:=True
.EnableAutoFilter = True
.Visible = xlSheetVeryHidden
End With
End Sub

en un modulo de codigo 'general ==Sub Autofiltros_Hoja_Oculta()
With Worksheets("hoja1")
.[a1].AutoFilter Field:=1, Criteria1:="xyz"
End With
End Sub
#2 Edixon
22/10/2006 - 16:21 | Informe spam
Perdon por no darte la infomacion completa.

El autofiltro se hace ya que en esa hoja (hoja1) hay varios nombre
iguales pero con diferentes caracteristicas
lo que ella hace es que en la hoja 2 cuando coloco un nombre x y se
ejecuta la macro en la hoja 1 se produce el autofiltro y me trae todas
las diferentes caracteristicas de dicho nombre.

Ahora el problema es que a veces me alteran los datos de la hoja 1 y
cuando busco la caracteristica de un nombre x
me trae datos errados, lo que necesito es o bloquear la hoja y se
ejecute bien la macro o si es mas facil ocultarla pero que ella sepa
que esta oculta ya que cuando la oculto(hoja1) y ejecuto la macro en
(hoja2) me produce un error. de todas formas aqui esta la macro que
estoy usando. Gracias por tu ayuda

Sub Macro1()
Dim Criterio As String
Criterio = Cells(11, 1).Text
Range("B11:D50000").Select
Application.CutCopyMode = False
Selection.ClearContents
Sheets("hoja1").Select
Selection.AutoFilter Field:=1, Criteria1:=Criterio
Range("C2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("hoja2").Select
Range("B11").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("A4").Select
End Sub
#3 Héctor Miguel
22/10/2006 - 21:56 | Informe spam
hola, Edixon !

Mostrar la cita
1) la macro que usas, se ejecuta bien... siempre y cuando la hoja1 NO este 'oculta' o falla en la linea que dice:
-> Sheets("hoja1").Select <= OJO: no es posibe 'seleccionar' una hoja cuando 'esta' se encuentra oculta :))

2) si revisas la propuesta en el mensaje anterior, notaras la 'diferencia' en la forma de hacer referencia a las hojas [ocultas o no] ;)

3) una 'adaptacion' [entre otras] de la macro que usas y la foma en la propuesta comentada, seria +/- como sigue:
[la ejecutas desde la hoja2]

Sub Macro1()
Application.ScreenUpdating = False
Range("b11:d50000").ClearContents
With Worksheets("hoja1") ' <= esta hoja puede [o no] estar oculta '
.Range("a1").AutoFilter Field:=1, Criteria1:=Range("a11")
.Range(.Range("c2"), .Range("c2").End(xlToRight).End(xlDown)).Copy
End With
Range("b11").PasteSpecial xlValues
Application.CutCopyMode = False
Range("a4").Select
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Mostrar la cita
#4 Edixon
23/10/2006 - 04:06 | Informe spam
Gracias me funciono perfecto era lo que queria.

Excelente
#5 Ricaurte
23/10/2006 - 19:09 | Informe spam
la verdad yo he tenido el mismo error, al parecer no se puede trabajar con
hojas ocultas, lo que puedes hacer es tenerla oculta, cuando la vayas a usar
es habilitarla y luego de usarla ocultarla.

usate updatescreen o algo asi era, y ponlo en false para no tener lio de que
se muestre y se vea.
Mostrar la cita
Ads by Google
Search Busqueda sugerida