Matriz, coleccion o algo parecido

08/11/2009 - 11:25 por Ignacio Perez | Informe spam
Hola a todos:
Tengo un bucle para dar color a un rango dinamico por filas alternativas:

Filas = Hoja2.Application.WorksheetFunction.CountA([A11:A65535])
For i = 11 To Filas + 11 Step 2

With Hoja2.Range("A" & i & ":" & "B" & i).Interior
.ColorIndex = 34
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

With Hoja2.Range("A" & i + 1 & ":" & "B" & i + 1).Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Next
Que queda muy bonito pero resulta bastante ineficiente cuando las filas
pasan de 10000 y el PC anda justito de recursos (1 minuto de espera).
Quiero saber si existe algun metodo mas rapido para conseguir esto. He
probado con una matriz pero no me ha llegado a funcionar (deberia estudiar
mas, jejeje)

Saludos
 

Leer las respuestas

#1 Ignacio Perez
08/11/2009 - 19:36 | Informe spam
Vaya¡¡¡ ya he reducido el tiempo a la mitad dando un color base a todo el
rango y luego el otro color a filas alternativas mediante el bucle:

Filas = Hoja2.Application.WorksheetFunction.CountA([A11:A65535])
With Hoja2.Range("A11:" & "B" & Filas + 11).Interior
.ColorIndex = 34
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
For i = 11 To Filas + 11 Step 2
With Hoja2.Range("A" & i + 1 & ":" & "B" & i + 1).Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Next

Pero mi pregunta sigue siendo la misma ¿si crease una coleccion o Array,
mediante un bucle claro, y luego aplicase el color a todas estas filas de un
plumazo, ganaria velocidad de ejecucion?
un ejemplito estaria fenomenal.
Gracias





"Ignacio Perez" wrote:

Hola a todos:
Tengo un bucle para dar color a un rango dinamico por filas alternativas:

Filas = Hoja2.Application.WorksheetFunction.CountA([A11:A65535])
For i = 11 To Filas + 11 Step 2

With Hoja2.Range("A" & i & ":" & "B" & i).Interior
.ColorIndex = 34
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

With Hoja2.Range("A" & i + 1 & ":" & "B" & i + 1).Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Next
Que queda muy bonito pero resulta bastante ineficiente cuando las filas
pasan de 10000 y el PC anda justito de recursos (1 minuto de espera).
Quiero saber si existe algun metodo mas rapido para conseguir esto. He
probado con una matriz pero no me ha llegado a funcionar (deberia estudiar
mas, jejeje)

Saludos

Preguntas similares