Excel VBA Redimensionar Rango
In this Article
Cambiar el tamaño de un rango usando VBA
Este tutorial demostrará cómo utilizar la propiedad Resize del objeto Range para cambiar para devolver un nuevo rango redimensionado del objeto Range original.
Sintaxis
La sintaxis de la propiedad Resize es
Range("A1").Resize(tamañoFila, TamañoColumna)
Donde Range(«A1») es su rango inicial. RowSize y ColumnSize deben ser mayores que cero. Cada entrada es opcional (por ejemplo, puede omitir RowSize para cambiar sólo el número de columnas, o viceversa).
Redimensionar el número de filas y columnas
El siguiente ejemplo amplía el rango con una celda A1 al rango A1:D10 aumentando el número de filas a 10 y el de columnas a 5.
Sub redimensionar()
Range("A1").Resize(5, 3).Select
End Sub
O, más comúnmente, asignará el rango redimensionado a una variable:
' Redimensionar el rango al tamaño deseado y asignarlo a una variable
Set newRng = ActiveSheet.Range("A1").Resize(5, 3)
Redimensionar sólo el número de filas
El siguiente ejemplo cambia sólo el número de filas:
' Sólo cambia el tamaño de las filas, el nuevo rango será $A$1:$A$10
Set newRng = Range("A1").Resize(10)
Cambiar el tamaño del número de columnas solamente
El siguiente ejemplo cambia el número de columnas solamente:
' Cambia el tamaño de las columnas solamente, el nuevo rango será $A$1:$E$1
Set newRng = Range("A1").Resize(, 5)
Redimensionar el rango de la tabla para excluir el encabezado
Si tiene una tabla en la hoja activa con una fila de cabecera, el código seleccionará primero toda la tabla y luego se moverá hacia abajo una fila para excluir la cabecera utilizando el método Range.Offset. Luego utilizará la propiedad Range.Resize para reducir el tamaño en una fila.
Sub SeleccionarDatosDeTabla()
' **IMPORTANTE**
' Haga clic en cualquier celda de la tabla antes de ejecutar la macro
' Bajar una fila usando Offset y luego reducir el tamaño del rango en una fila
Set Tabla1 = ActiveCell.CurrentRegion.Offset(1, 0)
Set Tabla1 = Tabla1.Resize(Tabla1.Rows.Count - 1, Tabla1.Columns.Count)
' Se seleccionan los datos excluyendo la fila de cabecera
Tabla1.Select
End Sub
Escribir un array de 2 dimensiones en un rango
Otro uso común es escribir un array de 2 dimensiones en una hoja. Como el rango a escribir debe coincidir con el tamaño del array, que normalmente no se conoce de antemano, se utiliza el método Resize para establecer el rango de salida. El siguiente ejemplo leerá los datos del rango A1:E10 en la hoja activa en un array y escribirá el array en la hoja de salida empezando por la celda A1:
Sub escribirArray()
'lee los datos en un array
Data = Rango("A1:E10").Value
' Redimensiona el rango de salida y escribe el array
Worksheets("Salida").Range("A1").Resize(UBound(Data, 1), UBound(Data, 2)).Value = Data
End Sub
Escrito por: Vinamra Chandra