jueves, 10 de enero de 2013

VBA: Intercalando filas alternas en un rango dado.

Hace poco un usuario habitual me planteó la forma de intercalar filas en un rango, alternando fila de datos con fila vacía. La cuestión planteada fué:
...¿Como puede insertar una fila en blanco en un rango de filas?, me explico, tengo 20 filas y quiero, una con datos otra en blanco, una con datos otra en blanco y asi sucesivamente...

Como no existe una forma sencilla de realizar esta acción, y manualmente llevaría un tiempo precioso, sólo nos queda construir una macro que haga el trabajo por nosotros.
Nuestra macro será bastante sencilla, solo hay que recalcar que haremos un recorrido por las filas del rango en sentido inverso al habitual, esto es, empezaremos de abajo a arriba (de la última fila a la primera), usando el método Insert.
Este orden concreto nos asegura que insertar nuevas filas no afecte a los siguientes insertados... lo que ocurriría si empezaramos de las filas superiores a las inferiores.

Dentro del Explorador de proyectos del Editor de VBA, insertaremos en un Módulo el siguiente código de nuestra macro de Excel:

Sub intercalado()
Set Rng = Range("A1:A10")
'controlamos la primera y última fila
'donde se encuentra el rango a intercalar
rng1 = Rng.Item(1).Row
rng10 = Rng.Item(Rng.Count).Row
'inhabilitamos la actualización o refresco de pantalla
Application.ScreenUpdating = False
'recorremos en orden inverso las filas del rango
For i = rng10 To rng1 + 1 Step -1
'insertando filas y desplazándolas hacia abajo
'como pretendíamos
Rng.Item(i).Insert Shift:=xlDown
Next i
'reactivamos el refresco de pantalla
Application.ScreenUpdating = True
End Sub



Podemos ver en la imagen su funcionamiento tras presionar el botón al que hemos asignado nuestra macro 'intercalado':

VBA: Intercalando filas alternas en un rango dado.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.