Ocultar filas en excel en función de su valor

Quisiera crear una macro para ocultar las filas de una hoja de excel en funcion del valor de una serie de celdas. El caso es más complejo pero pongo un ejemplo sencillo para poder aplicarlo a mi caso.

Si el valor de las celdas de la columna E es "no" la fila completa debe ocultarse.

2 Respuestas

Respuesta
2

Te anexo la macro

Sub ocultar()
'Por.Dante Amor
    For i = Range("E" & Rows.Count).End(xlUp).Row To 4 Step -1
        If LCase(Cells(i, "E")) = "no" Then
            Rows(i).Hidden = True
        End If
    Next
End Sub

Si el caso es más complejo como lo indicas, entonces podrías agregar más condiciones, por ejemplo, si quieres validar otro dato en otra columna:

Sub ocultar()
'Por.Dante Amor
    For i = Range("E" & Rows.Count).End(xlUp).Row To 4 Step -1
        If LCase(Cells(i, "E")) = "no" And _
           Cells(i, "F") = "" Then
            Rows(i).Hidden = True
        End If
    Next
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

. 30.11.16 #VBA Ocultar Filas por criterio

Buenas, Daniel

Aquí va una rutina que hace que solicitas.

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Public Sub OculFilas()
'---- Variables modificables ----
'=== DANIEL, modifica estos datos de acuerdo a tu proyecto:
    PrimCelda = "E5" 'Celda donde empezar buscar la clave
    Clave = "no" 'texto´para ocultar fila
'---- fin Variables
'
'---- inicio de rutina:
'  
Application.ScreenUpdating = False
Rows("4:65000").EntireRow.Hidden = False
LaFila = 0
Do While Not IsEmpty(Range(PrimCelda).Offset(LaFila))
    If UCase(Range(PrimCelda).Offset(LaFila).Value) = UCase(Clave) Then Range(PrimCelda).Offset(LaFila).EntireRow.Hidden = True
    LaFila = LaFila + 1
Loop
End Sub

Nota que, al principio del código, hay unas variables para que lo adaptes a tu archivo.

Allí le indicas desde qué celda empezar el control y cuál es la palabra clave para que oculte o no la fila.

.

Muchas gracias por tu respuesta, me funcionó perfectamente.

Necesitaría que me ayudases con otra cosa.

Quiero crear un formulario en el que introduzcas un número de catálogo y en función del valor de dicho número se abra una u otra hoja de un libro excel para posteriormente imprimirla. Por ejemplo, supongamos que en el formulario introduzco en número de catálogo "3", necesitaría que al introducirlo se me abriese la hoja 4 del libro excel y crear un boton en el formulario para imprimir dicha hoja.

Muchas gracias!

.

Buenas, Daniel

Te paso la estructura que deberías asociar al botón "Imprimir":

Private Sub CommandButton2_Click()
If Len(TextBox1) Then
    Select Case TextBox1
        Case 3
        Sheets("Hoja 4").PrintOut Copies:=1
        Case 4
        Sheets("Hoja 14").PrintOut Copies:=1
    '    Case ...
    End Select
End If
End Sub

Como verás a cada caso de lo que ingreses en TextBox1 le asocias qué hoja quieres que se imprima.

Espero que sea lo que necesitas.

Abrazo

Fer

Pd: Sólo por una cuestión de prolijidad, para que otros puedan aprovechar las respuestas, hubiera sido conveniente que formularas una nueva pregunta pues este tema no tiene relación con el título de la pregunta original. Pero está todo bien.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas