............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Agilizar macro, ayuda!!!!

Ver el tema anterior Ver el tema siguiente Ir abajo

Agilizar macro, ayuda!!!!

Mensaje por pedrosilv el Jue Ene 28, 2010 7:27 pm

Buena tarde a todos.

Quisiera saber si pueden ayudarme con lo siguiente. Tengo una serie de cuadros, cada cuadro con 12 filas. Muchas veces esas filas no tienen datos (es decir, solo poseen el valor cero, producto de un vínculo con otros cuadros). Pues bien, con la ayuda de algunos foristas he podido "ocultar" las filas que tengan datos igual a cero y mostrar solo aquellas filas que tengan valores mayores a el mismo. Para ello, inicialmente utilicé la siguiente macro:

Sub prueba()
Application.ScreenUpdating = False
For Each fila In Sheets("IMPRESION").Range("c68:c79,k91:k102,m136:m 147,m300:m311,m329:m340,m456:m467,m601:m612")

If fila = Empty Then fila.EntireRow.RowHeight = 0 Else fila.EntireRow.RowHeight = 15

Next fila
Application.ScreenUpdating = True
End Sub

El problema con ello es que a medida que he aumentado el rango, la macro se me ha vuelto más lenta, por eso he acudido a ustedes para ver si me pudieran hacer algunas sugerencias. Adelanto que con la ayuda de otras personas, me sugirienron la siguiente macro:

Sub prueba()

With Sheets("IMPRESION").Range("c68:c79,k91:k102,m136:m147,m300:m311,m329:m340,m456:m467,m601:m612")
.SpecialCells(xlCellTypeFormulas, xlTextValues).Rows.RowHeight = 0
.SpecialCells(xlCellTypeFormulas, xlNumbers).Rows.RowHeight = 10
End With

End Sub

El problema que he visto con ella es que no se ejecuta ya que me arroja el siguiente mensaje: "No se puede obtener la propiedad SpecialCells de la clase Range"

De antemano, muchas gracais por cualquier sugerencia/ayuda.

Saludos nuevamente
avatar
pedrosilv

Masculino Cantidad de envíos : 85
Edad : 32
Ciudad - Pais : Guatemala
Version de Excel : 2003-2007
Fecha de inscripción : 16/04/2009

Volver arriba Ir abajo

Re: Agilizar macro, ayuda!!!!

Mensaje por P@li el Vie Ene 29, 2010 9:03 am

Probá con algo así:

Código:



rows.autofit
range("$C$8,$C$13,$C$20,$C$19,$C$24:$C$26").SpecialCells(xlCellTypeBlanks).EntireRow.RowHeight=0



Tendrías que cambiar el rango por el que corresponda.

Saludos,
Pablo.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.