Ocultar con macro filas de excel

Hola Dam buena tarde, espero me puedas ayudar nuevamente con el siguiente problema: Necesito crear una macro en un documento que contiene 2 hojas una llamada DATOS y otra llamada MOSTRAR, donde necesito se ejecuten las siguientes condiciones:

si en hoja datos c20="no"
en hoja mostrar se deberán ocultar filas 17, 29 y 30
pero si en hoja datos c20="si"

en hoja mostrar se deberán ocultar las filas 31 y 32

si en hoja datos c58="no"

en hoja mostrar se deberán ocultar las filas 28 a 38, 41 a 44, y 46 a 49.
si en hoja datos c50="no aplica"
en hoja mostrar de deberán ocultar las filas 33 a 38.

Gracias nuevamente de antemano.

1 Respuesta

Respuesta
1

¿También es para imprimir la hoja “MOSTRAR”?
Si es así pon la macro

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Por.DAM
If ActiveSheet.Name = "MOSTRAR" Then
    If UCase(Sheets("DATOS").Range("C20")) = "NO" Then
        Range("17:17,29:29,30:30").EntireRow.Hidden = True
    End If
    If UCase(Sheets("DATOS").Range("C20")) = "SI" Then
        Range("31:31,32:32").EntireRow.Hidden = True
    End If
    If UCase(Sheets("DATOS").Range("C58")) = "NO" Then
        Range("28:38,41:44,46:49").EntireRow.Hidden = True
    End If
    If UCase(Sheets("DATOS").Range("C50")) = "NO APLICA" Then
        Range("33:38").EntireRow.Hidden = True
    End If
End If
End Sub

Saludos.DAM
Si es lo que necesitas.

Hola Dam, muchas gracias. Fijate que este archivo lo necesito para enviarlo a otros usuarios via correo por lo que NO necesito imprimirlo. Me ayudas con esta modificación por favor?

Gracias nuevamente.

Sigue las Instrucciones para poner la macro en worksheet
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
4. Del lado derecho copia la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
If Not Intersect(Target, Range("C20,C58,C50")) Is Nothing Then
    Sheets("MOSTRAR").Cells.EntireRow.Hidden = False
    If UCase(Sheets("DATOS").Range("C20")) = "NO" Then
        Sheets("MOSTRAR").Range("17:17,29:29,30:30").EntireRow.Hidden = True
    End If
    If UCase(Sheets("DATOS").Range("C20")) = "SI" Then
        Sheets("MOSTRAR").Range("31:31,32:32").EntireRow.Hidden = True
    End If
    If UCase(Sheets("DATOS").Range("C58")) = "NO" Then
        Sheets("MOSTRAR").Range("28:38,41:44,46:49").EntireRow.Hidden = True
    End If
    If UCase(Sheets("DATOS").Range("C50")) = "NO APLICA" Then
        Sheets("MOSTRAR").Range("33:38").EntireRow.Hidden = True
    End If
End If
End Sub

Funciona así, cada vez que modifiques, en la hoja DATOS, una de las celdas "C20,C58,C50", en la hoja MOSTRAR, se ocultarán las filas correspondientes.

Saludos. DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas