Macro para ocultar hojas según criterios lógicos

¿Existe alguna macro que me permita ocultar hojas según criterios establecidos?

Expongo...

Tengo una lista desde B8 hasta C58

Toda la columna B esta llena con los nombres de las hojas celda por celda, es decir que mi hoja 2 se llama Hoja2 y en mi celda B8 dice Hoja2, y en la B9 dice Hoja3 porque es el nombre de mi hoja tres.

La columna C esta llena de criterios variables que pueden ser nombres o valores de SI o NO. Es decir que si no estoy usando esa hoja puedo poner No, Cero, o dejarlo vacío.

Yo quiero una macro que me oculte las hojas cuya descripción tenga un criterio que yo establezca como por ejemplo cero.

Puedo hacer una macro así:

Sub ocultarhojavacía()
    If Range("C8").Value = 0 Then
    Sheets("1").Select
    ActiveWindow.SelectedSheets.Visible = False
    Else
    End If
End Sub

Pero esto me obligaría a hacerla para cada hoja y tengo 100, entonces, puedo adaptarlo a que al hacer click en un botón y me examine toda la columna C y donde los valores sean 0 oculte las hojas cuyo nombre corresponda a la columna B de esa misma fila.

si se puede les agradezco mucho su ayuda...

PD.: Ejemplo:

Hoja1=1      Hoja2=2      Hoja3=3

Celda B8=1   Celda B9=2   Celda B10=3

Celda C8=María   Celda C9=Pedro   Celda C10=0

Mi Macro debe al hacer click revisar la columna C y ocultar la hoja3 porque no le pertenece a nadie esa cuenta.

1 respuesta

Respuesta
1

Esta sería la macro:

Sub ocultarHojasVacias()
'x Elsamatilde
'se recorre la col B a partir de fila 2
'hasta el fin de filas ocupadas según col B
filx = Range("B" & Rows.Count).End(xlUp).Row
[B2].Select
While ActiveCell.Row <= filx
    'si la celda en C está vacía o con 0 oculta la hoja indicada en la celda activa
    If ActiveCell.Offset(0, 1) = 0 Then
        Sheets(CStr(ActiveCell.Value)).Visible = False   'xlVeryHidden
    End If
    'pasa a fila siguiente y repite el bucle
    ActiveCell.Offset(1, 0).Select
Wend
End Sub

Observa que en la línea que oculta la hoja tenés 2 opciones:

- con false se puede volver a mostrar desde el menú Formato

- con xlveryHidden se puede volver a mostrar la hoja con otra macro como esta:

Sub muestraHoja()
Sheets("5").visible = true
End Sub

ESta macro irá colocada en un módulo. Para ejecutarla podés contar con un botón, un atajo de teclado o desde el mismo menú Macros. Estos temas los tengo explicados en la sección Macros de mi sitio.

Sdos y no olvides valorar la respuesta.

Te recuerdo que la consulta sigue pendiente... no olvides valorar la respuesta si el tema quedó resuelto para darla por cerrada.

Sdos!

¡Gracias! 

De vedad me ha servido de mucho, perdona por tanto tiempo es que andaba de viaje y hasta ahora es que lo he aplicado... agradecido..

José Armando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas