jueves, 24 de mayo de 2018

VBA: application.Union-Trabajando sobre rangos discontinuos

Veremos un ejemplo hoy de como trabajar sobre rangos discontinuos desde nuestras macros.
Para ello haremos uso de una de las propiedades del objeto Application que vimos en este otro post


Emplearemos la propiedad: Application.Union para resolver esta cuestión.

La idea del ejemplo de hoy e ser capaz de recorrer con n solo bucle un rango de celdas discontinuo..(B2:B6, D2:D6 y F2:F6)

Para ello crearemos nuestro procedimiento en un módulo estándar:

Sub UnionRangosDiscontinuos()
'Unir tres rangos discontinuos
Dim rng1 As Range, rng2 As Range, rng3 As Range
'definimos los tres rango discontinuos a unir
Set rng1 = Range("B2").CurrentRegion
Set rng2 = Range("D2").CurrentRegion
Set rng3 = Range("F2").CurrentRegion

'los unimos con la propiedad .Unión !!!
Dim rngUnido As Range
Set rngUnido = Application.Union(rng1, rng2, rng3)

'demostramos que el recorrido se hace sobre el rango discontinuo
For Each celda In rngUnido
    With celda
        .Font.Bold = True
        .Interior.Color = vbYellow
    End With
Next celda

End Sub



Listo... rápido y simple.
Podemos comprobar, al ejecutar nuestra macro, que el resultado es el esperado...
solo recorremos las celdas de los tres rangos definidos.


Más adelante expondré una alternativa con arrays más eficiente...

No hay comentarios:

Publicar un comentario