Re-ocultar filas con macros

27/07/2007 - 14:00 por danek | Informe spam
Saludos al "comité de sabios"

Tengo en un fichero excel algo aproximado a lo siguiente
EPIGRAFE SUBEPIGRAFE IMPORTE1 IMPORTE2
I.
1. 0,00 0,00
2. 122,00 220,00

II. y asi sucesivamente

He prerarado una macro que cuando una línea tiene valores 0 en ambas
columnas de importe, la oculta. El código es el siguiente:

Sub OcultaFilas()
For x = 6 To 105
If Range("K" & x) = 0 Then
If Range("L" & x) = 0 Then
Rows(x).Select
Selection.EntireRow.Hidden = True
End If
End If
Next x
End Sub

El problema me surge que entre el subepigrafe 2, y el epigrafe II hay una
fila vacia, que en principio se debe mantener siempre y cuando el epigrafe I
exista, ya que si por ejemplo, los epígrafes I a X tienen datos cero y se
ocultan, las filas existentes entre epigrafe I y II, II y III, etc se me
mantienen y el resultado de la hoja queda bastante mal dejando un monton de
filas en blanco.

¿Se os ocurre alguna forma de ocultar dichas filas??? He mirado algo con
xlCellTypeVisible pero no me queda nada claro...

Gracias

Preguntas similare

Leer las respuestas

#1 danek
27/07/2007 - 17:44 | Informe spam
Lo he "apañado" con una chapuza, pero que funciona.
Colocando debajo de los valores una suma de lo de arriba, y dandole color de
texto igual al fondo para que no se vea. Así cuando lo de arriba es cero,
también me lo oculta...

Si se os ocurre algo más "limpio" ya lo comentareis...

"danek" escribió:

Saludos al "comité de sabios"

Tengo en un fichero excel algo aproximado a lo siguiente
EPIGRAFE SUBEPIGRAFE IMPORTE1 IMPORTE2
I.
1. 0,00 0,00
2. 122,00 220,00

II. y asi sucesivamente

He prerarado una macro que cuando una línea tiene valores 0 en ambas
columnas de importe, la oculta. El código es el siguiente:

Sub OcultaFilas()
For x = 6 To 105
If Range("K" & x) = 0 Then
If Range("L" & x) = 0 Then
Rows(x).Select
Selection.EntireRow.Hidden = True
End If
End If
Next x
End Sub

El problema me surge que entre el subepigrafe 2, y el epigrafe II hay una
fila vacia, que en principio se debe mantener siempre y cuando el epigrafe I
exista, ya que si por ejemplo, los epígrafes I a X tienen datos cero y se
ocultan, las filas existentes entre epigrafe I y II, II y III, etc se me
mantienen y el resultado de la hoja queda bastante mal dejando un monton de
filas en blanco.

¿Se os ocurre alguna forma de ocultar dichas filas??? He mirado algo con
xlCellTypeVisible pero no me queda nada claro...

Gracias
Respuesta Responder a este mensaje
#2 David
27/07/2007 - 18:18 | Informe spam
He modificado un poco tu código, pero creo que funciona para lo que buscas.
Pruébate lo siguiente, y comentas:

Sub OcultaFilas()
Dim Cf As Long
For x = 6 To 105
If Cells(x, 11) = 0 And Cells(x, 12) = 0 Then
If Len(Cells(x, 9)) > 0 Or Len(Cells(x, 10)) > 0 Then
Rows(x).EntireRow.Hidden = True
End If
End If
Next x
For x = 6 To 105
If Rows(x).EntireRow.Hidden = False Then
If Len(Cells(x, 9)) = 0 And Len(Cells(x, 10)) = 0 Then
Cf = Cf + 1
If Cf > 1 Then Rows(x).EntireRow.Hidden = True
Else
Cf = 0
End If
End If
Next x
End Sub

Observa que hago dos "pasadas" sobre tus 105 filas. La primera es para
buscar importes que tengan cero y que deban ser ocultados. La segunda es
para buscar las filas en blanco que hayan quedado adyacentes y que también
una de ellas deba ser ocultada.

Espero tus comentarios.



"danek" escribió:

Lo he "apañado" con una chapuza, pero que funciona.
Colocando debajo de los valores una suma de lo de arriba, y dandole color de
texto igual al fondo para que no se vea. Así cuando lo de arriba es cero,
también me lo oculta...

Si se os ocurre algo más "limpio" ya lo comentareis...

"danek" escribió:

> Saludos al "comité de sabios"
>
> Tengo en un fichero excel algo aproximado a lo siguiente
> EPIGRAFE SUBEPIGRAFE IMPORTE1 IMPORTE2
> I.
> 1. 0,00 0,00
> 2. 122,00 220,00
>
> II. y asi sucesivamente
>
> He prerarado una macro que cuando una línea tiene valores 0 en ambas
> columnas de importe, la oculta. El código es el siguiente:
>
> Sub OcultaFilas()
> For x = 6 To 105
> If Range("K" & x) = 0 Then
> If Range("L" & x) = 0 Then
> Rows(x).Select
> Selection.EntireRow.Hidden = True
> End If
> End If
> Next x
> End Sub
>
> El problema me surge que entre el subepigrafe 2, y el epigrafe II hay una
> fila vacia, que en principio se debe mantener siempre y cuando el epigrafe I
> exista, ya que si por ejemplo, los epígrafes I a X tienen datos cero y se
> ocultan, las filas existentes entre epigrafe I y II, II y III, etc se me
> mantienen y el resultado de la hoja queda bastante mal dejando un monton de
> filas en blanco.
>
> ¿Se os ocurre alguna forma de ocultar dichas filas??? He mirado algo con
> xlCellTypeVisible pero no me queda nada claro...
>
> Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida