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