miércoles, 30 de mayo de 2018

VBA:Uniendo rangos discontinuos con Arrays

Como continuación del post anterior: 'VBA: Trabajando sobre rangos discontinuos', hoy veremos una variante algo más abierta.
Trabajaremos sobre rangos discontinuos mediante arrays en nuestro procedimiento.


Supongamos nuestros tres rangos dscontinuos (igual que en l post anterior):
B2:B6
D2:D6
y F2:F6

Pretendemos recorrer esas celdas... y para ello insertaremos en el siguiente procedimiento en un módulo estándar:

Sub UnirRangosConArrays()
'definimos la matriz con la que cargaremos los rangos
Dim aRng(1 To 3) As Range

'definimos los rangos
Set aRng(1) = Range("B2").CurrentRegion
Set aRng(2) = Range("D2").CurrentRegion
Set aRng(3) = Range("F2").CurrentRegion

'recorremos la matriz cargada, con los distintos rangos discontinuos
For i = LBound(aRng) To UBound(aRng)
    'recorremos cada celda de cada rango
    For Each celda In aRng(i)
        'llevamos datos a la ventana de inmediato
        Debug.Print celda.Address, celda.Value
    Next celda
Next i

End Sub



Se observa lo simple del proceso... nos permite recorrer las diferentes celdas de nuestros rangos...
Si accedes a la venta de inmediato del editor de Vb (presiona Ctrl+g) veremos algo así (para mi ejemplo):
$B$2 10
$B$3 20
$B$4 30
$B$5 40
$B$6 50
$D$2 100
$D$3 200
$D$4 300
$D$5 400
$D$6 500
$F$2 1000
$F$3 2000
$F$4 3000
$F$5 4000
$F$6 5000


Una alternativa a Application.Union que vimos ;-)

Una importante cualidad de esta forma de trabajar es que nos permite operar sobre rangos discontinuos en diferentes hojas!!.

No hay comentarios:

Publicar un comentario