Dedicaré un espacio a explicar la diferencia entre las propiedades UsedRange y CurrentRegion.
Aunque en apariencia podrían ser similares hay un matiz diferenciador, que debemos conocer.
.UsedRange: devuelve un objeto Range que representa el rango utilizado en la hoja de cálculo especificada.
.CurrentRegion: devuelve un objeto Range que representa la región actual (Nota: la región actual es un rango limitado por cualquier combinación de filas y columnas vacías).
Dicho de otro modo, CurrentRegion es el rango rectangular de celdas no en blanco que rodea el objeto Range a la que estamos llamando CurrentRegion.
CurrentRegion deberemos utilizarlo con cuidado, ya que a veces tiene un comportamiento 'complicado'.
UsedRange es una propiedad del objeto WorkSheet; y CurrentRegion es una propiedad del objeto Range.
Para explicarlo más claramente mostraremos un sencillo ejemplo sobre nuestra hoja de cálculo:
Vemos claramente don rangos discontinuos de celdas con valores con celdas vacías entremedias: A1:C3 y E6:H7.
Si empleamos .CurrentRegion:
Si utilizamos .UsedRange:
Conociendo las diferencias entre ambas podremos aprovecharnos de ellas para conseguir definir variables para nuestros procedimientos... de manera especial para aquellas que nos sirvan para delimitar rangos.
Aunque en apariencia podrían ser similares hay un matiz diferenciador, que debemos conocer.
.UsedRange: devuelve un objeto Range que representa el rango utilizado en la hoja de cálculo especificada.
.CurrentRegion: devuelve un objeto Range que representa la región actual (Nota: la región actual es un rango limitado por cualquier combinación de filas y columnas vacías).
Dicho de otro modo, CurrentRegion es el rango rectangular de celdas no en blanco que rodea el objeto Range a la que estamos llamando CurrentRegion.
CurrentRegion deberemos utilizarlo con cuidado, ya que a veces tiene un comportamiento 'complicado'.
UsedRange es una propiedad del objeto WorkSheet; y CurrentRegion es una propiedad del objeto Range.
Para explicarlo más claramente mostraremos un sencillo ejemplo sobre nuestra hoja de cálculo:
Vemos claramente don rangos discontinuos de celdas con valores con celdas vacías entremedias: A1:C3 y E6:H7.
Si empleamos .CurrentRegion:
Sub MsgBox_CurrentRegion() MsgBox Sheets("Hoja1").Cells(1, 1).CurrentRegion.Address(RowAbsolute:=True, ColumnAbsolute:=True, ReferenceStyle:=xlA1) End SubDevolverá: $A$1:$C$3 ó lo que es igual el Rango R1C1:R3C3 en estilo R1C1
Si utilizamos .UsedRange:
Sub MsgBox_UsedRange() MsgBox Sheets("Hoja1").UsedRange.Address(RowAbsolute:=True, ColumnAbsolute:=True, ReferenceStyle:=xlA1) End SubDevolverá: $A$1:$H$7 ó lo que es igual el Rango R1C1:R7C8 en estilo R1C1
Conociendo las diferencias entre ambas podremos aprovecharnos de ellas para conseguir definir variables para nuestros procedimientos... de manera especial para aquellas que nos sirvan para delimitar rangos.
gracias me fue útil
ResponderEliminarLo máximo, conciso...
ResponderEliminar:D
Eliminargracias!
Gracias; Que bien de mucha ayuda. Si fuera posible un ejemplo de sumar si de forma dinámica. De antemano gracias
ResponderEliminarHola,
Eliminarpodrías emplear un SUMAR.SI con rangos variables empleando DESREF o INDICE para construir esos rangos..
Si buscas en la categoría de 'Funciones' del blog verás bastantes ejemplos
Un saludo