Macro lenta para formato hoja

19/06/2006 - 03:28 por klomkbock | Informe spam
Hola a todos de nuevo.

Tengo una macro que da formato a la hoja activa (la he puesto en el evento
Activate de las hojas, y para terceros libros en el codigo que trabaja con
ellos) de un libro, pues el nº de registros cambia con cierta frecuencia.

Para pocos registros va bastante bien, pero cuando se trata de varios
miles, se eterniza (casi 2 minutos para 10.000 registros). Supongo que
debe haber mas de una forma de que sea mas rapida, pero tras muchas
pruebas no logro dar con ellas. Si podeis echarme una mano de nuevo os lo
agradezco. A continuacion expongo el codigo:

Public Sub FormatoHojaActiva()
Dim CeldaH As Range
Application.ScreenUpdating = False
With ActiveSheet
With .UsedRange
.Columns.AutoFit
With .Borders: .LineStyle = xlContinuous: .Weight = xlThin: End With
With .Font: .Size = 9: .Bold = False: End With
.VerticalAlignment = xlVAlignCenter
.HorizontalAlignment = xlGeneral
End With
With .Columns("b:b"): .ColumnWidth = 35: .WrapText = True
With .Font: .Bold = True: .Size = 10: End With: End With
With .Columns("h:i"): .ColumnWidth = 22: .WrapText = True
.Font.Size = 8: End With
.Rows.AutoFit
With .Range("1:1"): With .Font: .Bold = True: .Size = 8: End With
.HorizontalAlignment = xlCenter: End With
For Each CeldaH In .Range(.Range("a1"), .Range("a65536").End(xlUp))
With CeldaH
'' aqui habia puesto "If .RowHeight < 25 Then .RowHeight = 25" _
'' pensando que tardaria menos, pero parece tardar mas que con Else
If .RowHeight < 25 Then
.RowHeight = 25
Else
.RowHeight = .RowHeight
End If
End With
Next
End With
Application.ScreenUpdating = True
End Sub

Muchas gracias de antemano

Un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 klomkbock
19/06/2006 - 04:27 | Informe spam
Hola Francisco MTY, gracias por tu interes

Como tu muy bien dices, en el codigo se ve el que, pero no el porque.

Voy a ver si lo se explicar: quiero que se aplique autofit a todas las
columnas menos a tres (b, h, i, creo) que tendrian un ancho fijo y se les
aplica wraptext. El problema es que al aplicar el wraptext el alto de fila
no se ajusta automaticamente (al menos a mi), por lo que le aplico un
autofit a las filas, pero entonces las que no han usado el wraptext se
quedan muy "bajas" y "feas", por lo que les doy un alto minimo (25) a las
que se han quedado muy "bajas". El resto son bordes, titulos de columna,
negrita y tamaños segun campo.

Espero que se me haya entendido.

Un saludo y hasta pronto
Ivan

Francisco MTY wrote:

Con el codigo se entiende mas o menos lo que deseas hacer pero por que mejor
no indicas lo que deseas en palabras escritas :)

Saludos

Preguntas similares