Ocultar filas vacías

Hola, lo que necesito es poder ocultar un numero determinado de filas vacías, como por ejemplo 30, de la hoja llamada 1 a la hoja llamada 13.
El criterio para ocultar las 30 filas vacías seria de las ultimas, ya que son las que menos utilizo, y preferentemente de abajo hacia arriba.
Esto es para que si una de las 30 filas no esta vacía, no oculte 29, porque lo que necesito en realidad es que oculte "LAS 30 ULTIMAS FILAS VACÍAS"
Tengo mi archivo por el cual estoy consultando en: http://www.subir-archivos.com.ar/
Con el nombre de: -AA PEDIDOS PUEBLOS pero no esta la macro en el archivo.
Yo cuento con esta:
Sub OcultarFilas()
Dim r As Range
Application.ScreenUpdating = False 'volverla a True al finalizar la macro
For Each r In Range("C3:C80")
If r.Value = "" And r.Offset(0, 1) = "" And r.Offset(0, 2) = "" And _
r.Offset(0, 3) = "" And r.Offset(0, 4) = "" And r.Offset(0, 5) = "" And _
r.Offset(0, 6) = "" And r.Offset(0, 8) = "" And r.Offset(0, 9) = "" And _
r.Offset(0, 10) = "" And r.Offset(0, 11) = "" Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
Next
End Sub
Pero esta macro con el rango que tiene oculta todas las vacías y yo lo que necesito es que oculte las 30 ultimas vacías, si pongo el rango (c49:c80) y una de ellas no esta vacía, supongamos una, oculta 29 filas y no 30. ¿Me podrías ayudar?
Desde ya muchas gracias.
A la espera de una pronta respuesta, le saludo atentamente. Jacinto.

1 Respuesta

Respuesta
1
Viendo tu ejemplo, comprobé que todas tienen fórmulas hasta la fila 83, entonces no será necesario buscar la última fila, solo colocá ese valor en la variable (fila).
Sub ocultaRango()
'macro desarrollada por Elsamatilde el 2/05/08
conta = 1
'se posiciona en la primer hoja a evaluar repitiendo el bucle hasta la hoja 13
Sheets("1").Select
While conta <= 13
'se guarda la última celda con fórmula o dato
fila = Range("B65536").End(xlUp).Row    ' o fila = 83
'seleccionar rango
Range(Cells(fila, 2), Cells(fila - 30, 13)).Select
Set rgo = Selection
For Each celdita In rgo
If celdita.Value <> "" Then
MsgBox "no hay 30 vacías - no se elimina el rango"
Exit Sub
End If
Next celdita
'se oculta el rango
Selection.EntireRow.Hidden = True
conta = conta + 1
ActiveSheet.Next.Select
Wend
End Sub
Esto solo funcionará si las 13 hojas se encuentran continuas.
Hola de nuevo Elsa, probé la macro y me dice el mensaje de que no hay 30 vacías y no se elimina el rango en la hoja 3. puesto que dentro de las ultimas 30 está una o más que no están vacías.
Lo que yo necesito en realidad es que oculte dentro del rango fila 3 hasta la fila 81 inclusive, las 30 ultimas filas vacías.
Ejemplo: si dentro de la fila 52 a la 81 (30 ultimas) están todas vacías, oculta de la 52 a la 81 inclusive, pero en cambio si la 60 u otra no esta vacía, oculta fila 51 a 81 sin ocultar la 60, y así también si hay más filas que no estén vacías.
A medida que haya más filas ocupadas, irá subiendo de fila el rango
Ejemplo: si demtro de (52:81) hay una fila no vacía el rango sera (51:81), si hay dos filas no vacías el rango será (50:81) y así sucesivamente solo que tienen que quedar a la vista las no vacías.
Resumiendo lo que tengo que ocultar son "LAS 30 ULTIMAS FILAS QUE ESTÉN VACÍAS"
Desde ya muchas gracias, esperando una pronta respuesta me encuentro a su disposición
Saluda atentamente Jacinto.
Cambiá la rutina por esta otra:
Sub ocultaRango2()
'macro desarrollada por Elsamatilde el 5/05/08
filas = 0
crit = 0
conta = 1
Sheets("1").Select
While conta <= 13
'se guarda la última celda con fórmula o dato
fila = Range("B65536").End(xlUp).Row
'seleccionar rango
While filas <= 30
Range(Cells(fila, 2), Cells(fila, 13)).Select
Set rgo = Selection
For Each celdita In rgo
If celdita.Value <> "" Then
crit = 1
End If
Next celdita
'se oculta la fila
If crit = 0 Then
Selection.EntireRow.Hidden = True
filas = filas + 1
Else
crit = 0
End If
fila = ActiveCell.Offset(-1, 0).Row
Wend
filas = 0: crit = 0
conta = conta + 1
ActiveSheet.Next.Select
Wend
End Sub
Pruébala y comentame.
Hola Elsa, quería decirte que usé la nueva macro y funciona bárbaro. Muchas gracias por tu ayuda.
Espero que nos encontremos por aquí de nuevo. Atentamente. Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas