Ejecutar macro que hace referencia a una hoja oculta

No soy un experto en excel y menos en macros. Esta pregunta la he buscado y he encontrado respuestas... Pero no sé cómo aplicarla a mi Macro. Te cuento:

Tengo una Macro que debe "lidiar" unos campos en varias hojas, entre ellas una que estará escondida pues la denominé "reblujo". Y en ella tengo cositas que no es necesario que vea el usuario.
El problema es que al ejecutar la Macro, esta no encuentra la hoja pues está oculta, entonces, por supuesto, muestra el error... Y no sé como y en qué parte del código colocar las líneas que has recomendado en otros hilos.

El código de mi macro es el siguiente (no lo pondré completo pues no lo veo necesario... La única hoja oculta es "Reblujo"):
Sub Limpiar_Act()

Application.ScreenUpdating = False

'

' Limpiar_Act Macro

'

'

Sheets("Reblujo").Select

Range("C6:F37").Select

Range("C37").Activate

Selection.ClearContents

Sheets("EDITAR ACT").Select

Range("B5:C27").Select

Range("B27").Activate

Selection.ClearContents

.....

Sheets("Instrucciones").Select

Range("A1").Select

End Sub

3 Respuestas

Respuesta
2

Yo agregaría después de

...

Application.ScreenUpdating = False

Worksheets("Reblujo").Visible = True

'Para hacer visible esa hoja

Y cuando está por terminar (para que vuelva a estar oculta)

Worksheets("Reblujo").Visible = False

Application.ScreenUpdating = True

De esta forma el usuario no verá la hoja... incluso en lugar de True/False, puedes usar la constante xlVeryHidden

Salu2

¡Mil Gracias!

Hola nuevamente!
¿Y cómo usaría la constante xlVeryHidden en el código?
¿Simplemente reemplazo el True/False por xlVeryHidden?
Gracias!!

correcto, deberías reemplazar el False por xlVeryHidden (al final el True va igual). Ten en cuenta que de esta forma ni siquiera tú podrás hacer visible la hoja desde el xls

Respuesta
1

Lo que había que hacer era sencillo... hice lo siguiente:

Le dije a la Macro que hiciera visible la hoja oculta "antes" de ejecutar la rutina de limpiar en esa hoja, y que después de ejecutarla la ocultara.

Entonces al inicio puse:

Sheets("Diagrama de Gantt").Select

Sheets("Reblujo").Visible = True
Y al final puse:

Sheets("Reblujo").Select

ActiveWindow.SelectedSheets.Visible = False

Y listo!

Respuesta

En lugar de utilizar el código "Sheets(...)" utiliza el valor de la hoja:

Hoja99. Range("C6:F37").Value = Empty

Hoja98.Range("B5:C27").Value = Empty

...

Al llamar las hojas por su valor y no por su nombre, no hace falta que vayas a la hoja. Puedes trabajarla aun oculta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas