Ocultar y mostrar filas por medio de una macro

Resulta que tengo 2 hojas de excel con los nombres "datos" y "detalle". Lo que quiero es que en la celda A5 de la hoja datos al poner valores del 1 al 4 oculte o muestre ciertas filas de la hoja detalle.
Quiero que la macro se ejecute si cumple los siguientes criterios
Si A5=2 se muestren solo la filas 44 y 50 de la hoja detalle. Por el contrario A5<2 q oculte las filas mencionadas.
De igual manera si A5=3 se muestren solo la filas 44, 45, 50 y 51 de la hoja detalle. Por el contrario A5<3 q oculte las filas mencionadas.
Y por último si A5=4 se muestren solo la filas 44, 45, 46, 50, 51 y 52 de la hoja detalle. Por el contrario A5<4 q oculte las filas mencionadas. Según el numero indicado en la celda A5 de la hoja detalle (1 a 3).

1 respuesta

Respuesta
1
Entiendo hasta cierto punto! Hay varios criterios que dependiendo del valor Excel tomara la decisión, pero hay una ambigüedad entre ellos. Paso a mencionar:
Caso "A" valor = 2 'Visible filas 44 y 50
Caso "B" valor < 2 'Oculte filas 44 y 50
Caso "C" valor = 3 'Visible filas 44, 45, 50 y 51
Caso "D" valor < 3 'Oculte filas 44, 45, 50 y 51
Caso "E" valor = 4 'Visible filas 44, 45, 46, 50, 51 y 52
Caso "F" valor < 4 'Oculte filas 44, 45, 46, 50, 51 y 52
*****
Si en la celda A5 de Hoja "Datos" coloco el valor de 3. Con este valor de 3 Excel no sabe que decisión tomar, si el caso "C" o el caso "F", dado que ambos casos se ajustan con las condiciones.
Seria mejor que pudieras replantear de nuevo de la siguiente forma:
Valor =1 ¿Que ocurre?
Valor =2 ¿Que ocurre?
Valor =3 ¿Que ocurre?
Valor =4 ¿Que ocurre?
***
A la espera de tu confirmación
Gracias Christian por tus comentarios.
Te adjunto lo que quiero.
Valor=1--- Resultado (Oculte las filas 44,45,46,50,51 y 52).
Valor=2--- Resultado (Visibles únicamente las filas 44 y 50. Ocultas filas 45,46,51 y 52).
Valor=3--- Resultado (Visibles únicamente las filas 44,45,50 y 51. Ocultas filas 46 y 52).
Valor=4--- Resultado (Visibles todas filas indicadas en valor 1)
Todas éstas filas están en la hoja "Detalle".
Te agradezco tu ayuda.
Saludos
Cuando abras el libro donde tienes con las dos hojas. Abriremos el VBE con la combinación ALT+F11. Saldrá una ventana (se trata de la ventana VBE). En esa ventana iremos a "Menu insertar > Modulo". En la pequeña ventana en blanco que saldrá copia y pega el siguiente código:
Sub OcultarMostrarFilas()
HojaN1 = "Datos"
HojaN2 = "Detalle"
Valor = Sheets(HojaN1).Range("A5").Value
Select Case Valor
    Case Is = 1 '(Oculte las filas 44,45,46,50,51 y 52).
        Sheets(HojaN2).Range("44:52").EntireRow.Hidden = False
        Sheets(HojaN2).Range("44:44,45:45,46:46,50:50,51:51,52:52").EntireRow.Hidden = True
    Case Is = 2 '(Visibles únicamente las filas 44 y 50. Ocultas filas 45,46,51 y 52).
        Sheets(HojaN2).Range("44:52").EntireRow.Hidden = True
        Sheets(HojaN2).Range("44:44,50:50,47:47,48:48,49:49").EntireRow.Hidden = False
        Sheets(HojaN2).Range("45:45,46:46,51:51,52:52").EntireRow.Hidden = True
    Case Is = 3 '(Visibles únicamente las filas 44,45,50 y 51. Ocultas filas 46 y 52).
        Sheets(HojaN2).Range("44:52").EntireRow.Hidden = True
        Sheets(HojaN2).Range("44:44,45:45,50:50,51:51,47:47,48:48,49:49").EntireRow.Hidden = False
        Sheets(HojaN2).Range("46:46,52:52").EntireRow.Hidden = True
    Case Is = 4 '(Visibles todas filas indicadas en valor 1)
        Sheets(HojaN2).Range("44:52").EntireRow.Hidden = False
    Case Is > 4
        MsgBox "Intente ingresar otro numero en la celda ""A5""", vbCritical + vbOKOnly
        Sheets(HojaN1).Range("A5").Value = ""
        Sheets(HojaN1).Range("A5").Select
End Select
End Sub
'====hasta aqui
Ahora en la ventana VBE, a la mano izquierda hay una subventana por así decirlo. Realiza doble click en donde diga "Hoja1 (Datos)". Saldrá otra ventana en blanco. Allí copia y pega el siguiente código:
If Target.Address <> "$A$5" Then
    Exit Sub
Else
    Call OcultarMostrarFilas
End If
End Sub
'==== hasta aqui
Guarda los cambios. Hecho esto puedes cerrar la ventana VBE y retornar al libro de Excel. La macro se ejecutara cada vez que tu cambies algún valor en la celda A5 de la hoja "Datos"
LO he probado y los resultados son satisfactorios.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas