Manipular Filas Excel con Macro

Solicito su colaboración para lograr los siguiente:

La macro debe posicionarse en la celda B6 y recorrer hasta la primer fila vacía, en su recorrido debe encontrar el valor "Saturday" y ocultar la fila, también encontrar el valor "Sunday" y reducir el alto de la fila.

La intentar de los días son cambiantes dependiendo del periodo.

Después de que la macro haya hecho su trabajo con las filas, la apariencia de la plantilla quedara como la siguiente imagen. (El color negro en la fila "Sunday" se logra con Formato Condicional y representa el corte de fin de semana)

La macro se debe ejecutar cada vez que se cambia un periodo arriba para no usar ningún botón.

1 respuesta

Respuesta

Si el proceso debe ser ejecutado al cambio de una celda, necesitas colocar este código en el objeto HOJA donde tengas tu tabla, tal como se aprecia en la imagen:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'se ejecuta al cambio en celda con período
If Target.Address = "$D$3" Then   'ajustar
    If Target <> "" Then          'si la celda no queda vacía (*)
        Call ocultaFilas
    End If
End If
End Sub

Y luego en un módulo coloca la siguiente macro:

Sub ocultaFilas()
'x Elsamatilde
'inicio y fin del rango
x = 6
y = Range("B5").CurrentRegion.Rows.Count + 4
'si no hay datos cancela el proceso
If y <= 6 Then Exit Sub
'hacer visible todas las filas y darles la altura
With Rows("6:" & y)
    .Hidden = False
    .RowHeight = 15    'ajustar
End With
[B6].Select
While Range("B" & x) <> ""
    If Range("B" & x) = "Saturday" Then
        Range("B" & x).EntireRow.Hidden = True
    ElseIf Range("B" & x) = "Sunday" Then
        Range("B" & x).EntireRow.RowHeight = 10    'ajustar a gusto
    End If
    x = x + 1
Wend
MsgBox "Fin del proceso"
End Sub

Como tu imagen no tenía los encabezados de fila y col, mira las aclaraciones en los códigos para ajustar las referencias a tu modelo. 

Sdos y no olvides valorar la respuesta si el tema queda resuelto, o comenta si necesitas algún ajuste.

Elsa

PD) En videos 45 al 47 de mi canal desarrollé los eventos de hoja. Change y Selection_Change los encontrarás en el video 46.

http://aplicaexcel.com

Hola Elsa Matilde

Olvide mencionar que la hoja esta protegida (Debe estar protegida) y me da este error.

Además no esta reduciendo el alto de la fila de Domingo (le ajuste la altura a 4).

Perdón por la demora, pero lamentablemente no estamos recibiendo aviso de las respuestas.

Te agregué las instrucciones de protección.. Ajustá tu clave.

Sub ocultaFilas()
'x Elsamatilde
'inicio y fin del rango
x = 6
y = Range("B5").CurrentRegion.Rows.Count + 4
'si no hay datos cancela el proceso
If y <= 6 Then Exit Sub
'hacer visible todas las filas y darles la altura
'desproteger la hoja
Activesheet.Unprotect "tu_clave"
With Rows("6:" & y)
    .Hidden = False
    .RowHeight = 15    'ajustar
End With
[B6].Select
While Range("B" & x) <> ""
    If Range("B" & x) = "Saturday" Then
        Range("B" & x).EntireRow.Hidden = True
    ElseIf Range("B" & x) = "Sunday" Then
        Range("B" & x).EntireRow.RowHeight = 10    'ajustar a gusto
    End If
    x = x + 1
Wend
'volver a proteger la hoja con los permisos establecidos según tu criterio
Activesheet.Protect "tu_clave"
MsgBox "Fin del proceso"
End Sub

PD) Puedes contactarme al correo que aparece en mi sitio que dejo al pie.

Sdos!

Con respecto al alto de fila del día domingo, fíjate que la macro sí lo contempla:

ElseIf Range("B" & x) = "Sunday" Then

Solo revisa que esté escrito del mismo modo, sin espacios ni al inicio ni al final.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas